Laden...

Forenbeiträge von talla Ingesamt 6.862 Beiträge

17.02.2012 - 19:40 Uhr

Hallo,

wenn es sich am COM Anschluss meldet, dann kannst du es auch darüber ansprechen. Du musst halt nur beachten was der Hersteller als Kommunikationsprotokoll vorschreibt.

Was du da machst, sieht ja ziemlich beliebig aus. Sowas hier

sp.ReadExisting() + "|Line|" + sp.ReadLine() 

führt immer zur genannten Exception wenn der Sender zwischen Ende von der ReadExisting und ReadLine keine neuen Daten mit Zeilenende schickt. Ich erkenn auch überhaupt keinen Sinn in der Abfolge der Lesemethoden.

17.02.2012 - 14:59 Uhr

Hallo,

ich stand mal vor Ewigkeiten vor einer ähnlichen Aufgabe:
Logfiles mit Pfaden und weiteren Angaben separiert mit Semikolon. Waren ca. 5 Spalten und ca. 5 Millionen Zeilen.

Das schnellste war Zeile für Zeile zu lesen mit ReadLine und diesen String dann mit Substring anhand der Semikolons auseinanderzunehmen. Mit den Substrings wurden dann auch Objekte mit den Infos befüllt.

Warum das schnell ist: Es werden wenig temporäre Strings erzeugt, da die mit Substring erzeugten Strings ja das Datum waren für die zu erstellenden Objekte und es mussten keine großen Speicherbereiche angefordert werden da Zeile für Zeile gelesen wurde. Das ganze war in ner zehntel Sekunde durchgeparst. Mit sowas wie Regex braucht man z.B. gar nicht erst anfangen. Bei trivialen Aufbauten wie

in jeder Zeile steht ein Zeitstempel mit Messwert hat man 100 Zeilen durchgeparst bevor überhaupt nen Regexobjekt erstellt wurde.

Alternativ empfiehlt sich bei vielen Dateien auch das arbeiten mit Threads Aber nur wenn das Parsen länger als das Lesen dauert um dann nen Producer-Comsumer Muster umzusetzen. Gleichzeitig mehrere Dateien zu lesen macht keinen Sinn da die Festplatte eh schon das begrenzenden Medium ist und mehrere Leseanforderungen sich nur gegenseitig behindern da der Lesekopf ja umpositioniert werden muss. Da ist es egal wieviel Cores die CPU hat, die Festplatte ist das begrenzende Medium.

16.02.2012 - 20:34 Uhr

Hab mich geirrt beim Doppelklick, die Einzelevents wie MouseDown und MouseLeftButtonDown werden aber geschluckt.

16.02.2012 - 20:26 Uhr

Hallo,

wie wärs mit Doku lesen wie in [Hinweis] Wie poste ich richtig? Punkt 1.1 gefordert?

16.02.2012 - 19:35 Uhr

Hallo,

das Event wird nicht ausgelöst, da de rButton vorher schon die Mouse Events als behandelt kennzeichnet um sein eigenes Click Event zu generieren. Du kannst aber die entsprechenden Preview Events benutzen.

16.02.2012 - 09:56 Uhr

Hallo,

Nicht ganz, aber ich fürchte da haben auch die letzten Ergänzungen im Thread dazu beigetragen.

Zu 2. Nein, DependencyProperties verwendet man bei jedem DependencyObject, nicht nur Controls. DependencyObject ist ja ne wichtige Basisklasse in WPF und Klassen wie Styles, Animations etc. sind keine Controls, könnten ohne DependencyProperties aber nicht funktionieren.

Zu 3. Nein, DependencyProperties sind nicht statisch (wie schon oben geschrieben). Statisch ist nur der Identifier mithilfe dessen man auf die DependencyProperties per GetValue und SetValue zugreifen kann. Der muss auch nicht public sein, protected geht genauso, nur bei private schränkt sich die Nützlichkeit dann schon bissle ein.
Damit erledigt sich auch 4, weil DPs nicht statisch sind.

Zu 5. Abgesehen von der Aussage statisches DP, stimmt es prinzipiell. Bei GetValue wird zwar nur der DP Identifier übergeben, aber die Property Engine hat noch das entsprechende Objekt als Schlüssel um zwischen verschiedenen Instanzen einer Klasse unterscheiden zu können. Wobei das aber ein Interna ist, welches für die Praxis vollkommen egal ist.

Zu 6. Stimmt nicht ganz, nicht der Wert der zuletzt gesetzt wird zählt, sondern der Wert mit der höchsten Priorität. Und das Bild zeigt nur, wie der Basiswert bestimmt wird. Das muss nicht der Wert sein, den das Property bei GetValue liefert. Der Basiswert wird nur als Grundlage benutzt. Animationen, Value Coercion etc. können den effektiven Wert den GetValue liefert, noch ändern.

Es soll keine Logik in den Properties vorhanden sein. Denn die Properties werden nie aufgerufen.

So wie sie dasteht, verwirrt die Aussage ziemlich imo. Was du meinst sind die Property Wrapper eines Dependency Properties und nicht aufgerufen stimmt auch nur für den XAML Parser. In der Praxis heißt das, dass bei Elementen welche in XAML verwendet werden, direkt auf das DP zugegriffen wird, statt über den Property Wrapper. Daher ist die Aussage das keine Logik in den Wrappern enthalten sein darf richtig. Aber das gilt wie gesagt nur für diesen Fall, nicht so allgemein wie die Ursprungsaussage war. Weil dann müsste man sich echt fragen wozu die Wrapper da sind 😉

15.02.2012 - 14:44 Uhr

Static ist static, da hast du recht, aber statische DependencyProperties gibt es nicht. Das was du da hast, ist nur der Identifier des DependencyProperties. Mit diesem kannst du auf das eigentliche Dependency Property zugreifen mit GetValue und SetValue. Das wird in deinem verlinkten Artikel genauso erklärt.

14.02.2012 - 11:07 Uhr

Hallo,

bezüglich Codebeispiele unbedingt [Hinweis] Wie poste ich richtig? Punkt 4 beachten.

Was meinst du mit

entsprechende Bibliothek gemäß seiner Bestimmungen zu verwenden ? Hast du eine Bibliothek die dir die Interpolation übernimmt oder nicht? Das kommt irgendwie nicht so richtig raus.

Falls ja, solltest du auch sagen was du verwendest, sonst kann dir keiner helfen.

13.02.2012 - 17:50 Uhr

Hallo,

du kannst einfach die Parse, bzw. TryParse Methode von Double verwenden. Du hast dort die Möglichkeit einen eigenen IFormatProvider anzugeben in dem du die Logik zurm Formataufbau implementieren kannst.

13.02.2012 - 17:33 Uhr

Hallo,

dann ist dein INotifyChange wohl nicht richtig implementiert. Es reicht z.B. nicht das A das implementiert, weil A muss ja auch mitbekommen das B und C sich geändert haben, sonst weiß A ja nicht wann es das Changed Event werfen soll.

12.02.2012 - 22:05 Uhr

Hallo,

meinst du den Mauscursor oder den Einfügecursor einer TextBox? Der zweite Webbroser ist nicht zufällig nen VisualBrush oder ähnlichem vom ersten oder?

12.02.2012 - 13:44 Uhr

Wie gehts was? Auf die Nachfragen eingehen wäre nicht schlecht wenn man Hilfe erwartet...

Wie das WPF Resourcen System funktioniert gibts hier und wie man das Image Control benutzt steht ebenfalls in der MSDN Library.

12.02.2012 - 13:03 Uhr

Hallo,

[Hinweis] Wie poste ich richtig? Punkt 5 beachten. "Es funktioniert nicht" ist keine Fehlerbeschreibung!

Bist du dir sicher das du in WPF richtig bist? Du verwendest nämlich nicht das WPF Ressourcen System, sondern das klassische .Net System. Und Image ist in WPF ein Control welches ein Bild anzeigt, nicht das Bild selber. Und warum GetHbitmap? Das ist ne Funktion aus Windows Forms und nicht aus WPF, zumal die auch nur notwendig ist bei Interop Szenarien und bissle problematisch ist, da man immer selber manuell drauf achten muss auch DeleteObject aufzurufen.

12.02.2012 - 12:57 Uhr

Hallo,

so wie dein Beitrag dasteht muss ich leider auf [Hinweis] Wie poste ich richtig? Punkt 4 verweisen. hier im Forum werden konkrete Fragen gestellt und nicht einfach ein Problem genannt und andere sollen arbeiten.

09.02.2012 - 12:50 Uhr

Ja, so macht man das auch in WPF üblicherweise. Man bindet seine Controls gegen die Daten und arbeitet immer direkt mit den Daten.

09.02.2012 - 11:36 Uhr

Hallo,

Hallo,

da brauch man nicht groß suchen, steht wie alles immer in der MSDN:

Each row in the data grid is bound to an object in the data source, and each column in the data grid is bound to a property of the data object. In order for the DataGrid user interface to update automatically when items are added to or removed from the source data, the DataGrid must be bound to a collection that implements INotifyCollectionChanged, such as an ObservableCollection<T>.

Damit erklären sich deine Fragen.

08.02.2012 - 09:52 Uhr

Ach hab mich verschrieben. Meine den Call Stack.

07.02.2012 - 19:05 Uhr

Hallo,

Canvas ist hier sicherlich nicht der richtige Layoutcontainer. Hier findest du eine Übersicht und dadrin dann auch den passenderen.

Und ansonsten lies dir bitte unsere Regeln durch: [Hinweis] Wie poste ich richtig?. Stell konkrete Fragen und nicht einfach: Ich brauche Hilfe bei...

Bezüglich der Anfängerbemerkung deinerseits: siehe Punkt 1.1 der Postingregeln. Ein gewisses Basiswissen wird vorausgesetzt.

07.02.2012 - 18:57 Uhr

Ja, aber den Stacktrace kannst du ja trotzdem anschaun. Auch zeigt dir die Exception genau die Zeile wo sie ausgelöst wurde.

07.02.2012 - 15:24 Uhr

Hallo,

guck dir die InnerException und den StackTrace an. Dann siehst du sofort welche Methode den StackOverflow verursacht.

04.02.2012 - 11:59 Uhr

Hallo,

was denn z.B. von WP8?

Durch entsperren des Telefons hast du die Möglichkeit eigene Anwendungen rauf zu spielen. Aber das OS gibt dadurch ja trotzdem nicht mehr Funktionalität her als es jetzt halt hat. Da helfen auch keine eigenen Anwendungen. Und es gibt mittlerweile sicherlich keine Funktionalität die durch irgendeine der 50k Apps dies mittlerweile gibt, nicht ausgenutzt wird.

03.02.2012 - 11:59 Uhr

Hallo,

das Markup ergibt nur begrenzt Sinn. Du hast nen Border mit der Größe 200200 und nen Image dadrin was 300400 groß sein soll. Wie soll das gehen? Das Grid ums Image ist sinnlos, genauso der StackPanel Style. Bei so einem Style kann man Margin gleich als Property zuweisen.

Zumindest ein Ausschnitt vom Bild solle aber auch jetzt angezeigt werden. Wenn nichts angezeigt wird, musst mal gucken ob der Pfad zum Bild passt.

03.02.2012 - 05:34 Uhr

Hallo,

... dieses Project war ursprünglich ein WPF Projekt ... Deine Extension hat nicht noch zufällig die Verweise auf die WPF UserControl Klasse, statt auf das Windows Forms UserControl?

02.02.2012 - 14:20 Uhr

Hallo,

ist nicht überflüssg. Der Border zeigt den Hintergrund Brush an. Was hier bisher bissle unterm Tisch gefallen ist: Es gibt nicht "das eine" Template für die Groupbox. WPF bringt für die unterschiedlichen Syles von Aero und den klassischen Theme für Windows jeweils unterschiedliche Templates mit!

Die Styles kann man sich z.b. mit Reflector und dem BAML Plugin anschauen. Ansonsen z.B. mit Blend oder zur Not im Code halt das Template nach XAML serialisieren. Mole kann das z.B. auch.

02.02.2012 - 13:02 Uhr

Hallo,

den Aufbau deiner Applikation verstehe ich immer noch nicht.

Du redest im Ursprungspost von einer WPF App die du in eine Consolenanwendung umgewandelt hast und verwenden tust du Windows Forms Timer. Weißt du überhaupt was du machst? Das hört sich nach wahllos zusammengebastelt an.

Thread.Sleep im Tick Event vom Forms Timer geht ja gar nicht. Damit blockierst du die gesamte UI für die Wartezeit. Klar das es da ruckelt. Der Timer dürfte aber so oder so nicht richtig funktionieren, da

It requires that the user code have a UI message pump available bei dir nicht erfüllt ist, da in einer WPF Applikation keine Nachrichtenschleife von Windows Forms läuft.

02.02.2012 - 08:00 Uhr

Hallo,

in dem Fall gehts nicht, weil Value vom Typ Object ist und es keinen allkgemeinen TypeConverter von string zu object gibt der ein Visibility ergibt (sowas wäre auch nur schwer vorstellbar da aus dem String ja nicht ersichtlich ist, welcher Typ das werden soll). Wenn der Zieltyp dagegen vom Typ Visibility wäre, wie es z.B. das entsprechenden Property bei Controls gibt, dann ist es problemlos möglich zu schreiben

<... Visibility="Visible" />

Weil einen Typconverter Visibility zu String und umgekehrt, den gibts.

@Abt: Der Parser hat damit nur am Rand zu tun. Was verfügbar sein muss, ist ein passender Typekonverter. Dann kann auch der Parser problemlos damit umgehen.

01.02.2012 - 22:05 Uhr

Hallo,

Schachbrett hatten wir grad erst: Schachbrett erzeugen

Die Rectangles zu erzeugen reicht ja nicht, du musst sie ja auch positionieren. Das wird im obigen Beitrag über das Uniformgrid gemacht.

Bzgl. Rectangle und Rect: Rectangle ist ein rechteckiges Shape, Rect dagegen nur eine Struktur deren Werte ein Rechteck beschreiben. Aber bei solchen Dingen immer die MSDN befragen. Die beantwortet praktisch alles.

31.01.2012 - 22:08 Uhr

Hallo,

Nen Bug ist das nicht wirklich, das Template ist halt einfach so definiert. Das Beispiel in der MSDN ist da angelehnt und dort sieht man ganz gut, dass der Border, der die Umrandung darstellt, nach dem ContentPresenter im Template ist und daher halt dadrüber dargestellt wird wenn sie sich überschneiden sollten.

Normal stellt das auch kein Problem dar und ganz ehrlich, ich kann mir beim besten willen nichts vorstellen, wo man den Inhalt der Groupbox darüber hinaus darstellen will.

Ändern kann man das durch nen eigenes Template leicht.

31.01.2012 - 18:38 Uhr

Hallo,

kann man sicherlich machen, obwohl das eigentlich nur einer Verringerung der Auflösung + danach wieder hochskalieren auf Originalgröße entspräche.

Ich denke das Ergebnis würde nicht gut aussehen, da die traditionellen Mosaike ja von den unterschiedlich großen Teilen und von den unregelmäßig angelegten Formen leben.

Bisher seh ich hier aber noch keine Frage zu WPF, sondern nur wie man ein Mosaik prinzipiell erstellt, daher gehts ab mit dem Beitrag ins Grafikforum.

31.01.2012 - 18:14 Uhr

Hallo,

innerhalb der Send Methode liegen deine Bildrohdaten ja mehrmals im Speicher durch das Umkopieren der ganzen Arrays. Das imgData Array ist z.B. unnötig, da du den Inhalt des MemoryStreams ja gleich in dein result Array schreiben könntest. Da halte ich die 25-100 MB doch für ganz gut, grad wo die großen Arrays ja mehrmals in der Sekunden neu angelegt werden und jedes mal neu Speicher angefordert werden muss.

Ich versteh aber nicht wieso es beim Kollegen Probleme geben sollte wenn dein Programm nur 100 MB brauch. Das würde ja heißen, das dem .Net Programm nicht mal 100 MB zugestanden werden und dann ist es sicherlich nicht Problem des .Net Program´ms wenn der Speicher vorher schon total dicht ist.

Es kommt übrigens nicht nur darauf ob absolut noch genug Speicher zur Verfügung steht. Wenn es zwar genug Speicher gibt, aber keinen durchgehend freien Bereich in der benötigten Größe, dann gibts genauso ne OutOfMemory Exception.

PS: Ne while(true) Schleife mit Thread.Sleep ist immer sinnlos. Einfach nen entspreachenden Timer mit der Wartezeit benutzen.

31.01.2012 - 15:41 Uhr

Das Panel ist 20 Pixel hoch, das Bild 16, da passt sicherlich kein Text mehr zum Anzeigen rein, da das Stackpanel ja vertikal die Children anordnet.

Ansonsten kann ich michlG nur zustimmen was den Vorschlag mit dem Template betrifft.

30.01.2012 - 00:42 Uhr

Hallo,

OutOfBrowser Anwendungen müssen installiert werden. Sprich der User bekommt die Möglichkeit per Rechtsklick auf die SL Anwendung im Browser, die Anwendung zu installieren. Dabei werden entsprechende Shortcuts angelegt und erst danach kann der User die Anwendung wie eine normale Desktop Applikation starten. Einfach so eine Anwendung als OutOfBrowser zu starten geht nicht.

29.01.2012 - 16:45 Uhr

Hallo,

ist das gleiche. Variante 2 geht ab C# 2.0. Es gibt mit Lambda Expressions auch noch eine dritte Variante, siehe hier:How to: Subscribe to and Unsubscribe from Events (C# Programming Guide).

26.01.2012 - 19:38 Uhr

Kann chilic nur zustimmen. Einfach den WindowState entsprechend setzen und gut ist. Zur Not auch noch über die SystemParameters Klasse um die Größen rauszukriegen wenn mans komplizierter haben will, aber sowas macht man sicherlich nicht mit Window Messages in WPF.

26.01.2012 - 10:04 Uhr

Hallo,

der Hintergrund ist doch gegen Unactive_Arrow gebunden. Sprich, wenn du den ändern willst, ändere Unactive_Arrow.

25.01.2012 - 08:16 Uhr

Hallo,

den DataContext willst du bestimmt nicht so setzen wie es da steht. Weil momentan gibst du da nen Type Objekt an weil du mehr oder weniger schreibst DataContext = typeof(ADTree2). Wahrscheinlicher willst du doch eher nen Objekt von ADTree2 erstellen und des dem DataContext zuweisen oder?

23.01.2012 - 17:42 Uhr

Hallo,

wie immer hilft einfach Doku lesen.

**Listen **does not block.

Daher sind chilics Zweifel berechtigt.

23.01.2012 - 17:37 Uhr

Hallo,

ins Assembly kompilieren würde alleine deshalb schon nicht gehen, weil sich die Klasse dann in zwei unterschiedlichen Assemblies befindet und damit unterschiedliche Typen wären.

Daher geht nur der Weg mit der gemeinsamen Assembly die in beiden Projekten vorliegt.

22.01.2012 - 21:32 Uhr

liegt das an meiner leitung oder ehe am Server ??

Vielleicht beides, oder an der Auslastung der Server oder am unterschiedlichen Routing zwischen dir und den Servern oder ...

Da gibts so viele Gründe was Verzögerungen auslösen kann. Deshalb versuchen solche Testseiten in aller Regel Server zu benutzen die viele freie Kapazitäten haben und recht nah am Client sind.

22.01.2012 - 21:28 Uhr

Hallo,

zur ersten Frage: Einfach in die Doku gucken...
Wobei ich nicht reguläre Ausdrücke verwenden würde wenn es nur darum geht einen festen String bestimmter Länge zu entfernen. Da sind die einfachen Stringoperationen schneller.

Zur zweiten: Der Link sieht doch gut aus. Welches Pattern hast du denn ausprobiert?

22.01.2012 - 20:32 Uhr

Dann benutz den Debugger richtig und arbeite mit Breakpoints. Und welche Konsole meinst du? Der Debug Output erscheint unter VS im Debugoutput Fenster oder man kanns sich mit Tools wie DebugView anschaun, aber auf irgend ner Standardkonsole wirst du nichts sehen.

22.01.2012 - 19:08 Uhr

Hallo,

hat _cxml.Items denn die anzuzeigenden Items drin?

PS: Und bitte immer die entsprechende Technologie und verwendete Bibliothek nennen, wenn es kein Bestandteil des Frameworks ist. Hier sollte es der Silverlight PivotViewer sein oder?

22.01.2012 - 18:57 Uhr

Zu 1. Warum DoEvents Mist ist!

Dein Code macht so auch gar keinen Sinn. Du lagerst doch grad deine Arbeit in nem Thread aus, sonst müsstest ja net zum GUI Thread invoken um die Anzeige zu ändern. Und dann rufst du im GUI Thread DoEvents auf? Wieso? Da gibts überhaupt keinen Grund für. Wenn du den GUI
Thread so aus deinem Arbeiterthread zuballerst, dass er wieder blockiert - dann kannst du gleich das ganze Threading sein lassen.

Zu 2. Einige Exceptions kann man nicht fangen, wie z.B. die StackOverflowException wenn sie von der CLR geworfen wird. Macht auch Sinn, weil das Programm danach in einem Zustand ist, wo es nicht weitergeht weil keinerlei Funktionsausführung mehr möglich ist und daher beendet werden muss.

22.01.2012 - 08:53 Uhr

Hallo,

lies einfach die ganze Datei ein und schreib sie geändert neu.

21.01.2012 - 21:14 Uhr

Hallo,

kann man prinzipiell sicher so machen. Auf jeden Fall nen Timer. Backgroundworker macht hier, zumindest für das Warten auf den nächsten Test, gar keinen Sinn. Was die Größe der Testdaten angeht muss man sicherlich bissle rumprobieren was sich bewährt - kommt auch auf die erwartete Geschwindigkeit an. Sollte auf jedenfall nicht zu klein sein um etwaige Cachingmechanismen zu umgehen. Auch am besten zufällige Daten.

21.01.2012 - 13:44 Uhr

Hallo,

könntest nen Canvas dafür verwenden, oder nen Grid, je nachdem was du genau brauchst. Schau dir mal folgende Links an: WPF Content Model -> erklärt dir warum Window nur ein Kindelement haben kann und Panels Overview -> erklärt was für Panels es gibt und wie man sie einsetzt.

21.01.2012 - 08:00 Uhr

Hallo,

Das ist ne StackOverflowException. Einfach mitm Debugger ranhängen, dann siehst du im Stack Trace was die Exception auslöst.