Multi-Threading und Debug.Writeln

15/04/2010 - 11:37 von Tobias Bergmann | Report spam
Hallo!

Ich habe eine Applikation mit mehreren Threads. In den Threads gebe ich mit
Debug.Writeln Informationen in meine IDE aus, um den Programmablauf
beurteilen zu können.
Manchmal werden Ausgaben aber "verschluckt": der Scrollbar im Output-Fenster
der IDE zuckt kurz, als wàre eine neue Zeile hinzugefügt worden, aber es
kommt keine. Wenn ich Breakpoints auf die Debug.Writeln-Anweisungen setze,
kann ich genau nachvollziehen, dass sie auch wirklich abgeschickt wurden,
aber es kommt eben nichts an.

Wie kann ich das Debug.Writln thread-safe machen? Ein Invoke bietet die
Klasse nicht!

Vielen Dank für Eure Tipps!
 

Lesen sie die antworten

#1 Tobias Bergmann
15/04/2010 - 13:57 | Warnen spam
Jetzt muss ich meiner eigenen Anfrage antworten... Ich habe nàmlich zufàllig
etwas herausgefunden.
Ich habe in unterschiedlichen threads jeweils einzelne Debug.Writeline
eingebaut, die etwas ausgeben sollen. Manche werden einfach nicht
ausgegeben, ohne erkennbaren Grund.
Wenn ich jetzt jeweils einen zweiten Aufruf der Debug.Writeline-Methode
hinten dran setze, dann kommen die ersten Aufrufe plötzlich durch. Also
dachte ich, es hàtte was mit dem Stream zu tun, der ein explizites "Flush"
braucht => Debug.Flush hinter jede Debug.Writeline-Methode. Aber das bringt
auch nichts.
Jetzt habe ich mir einfach beholfen, in dem ich nach jedem Debug.Writeline
mit gewünschten Nutzdaten noch zwei bis drei Debug.Writeline(String.Empty)
gesetzt habe. Manche von denen werden zwar manchmal noch "verschluckt", aber
der erste Aufruf mit den Nutzdaten kommt jetzt in jedem Fall durch.

Ich kann mir das Verhalten nicht erklàren, aber vielleicht sitzt ein MVP vor
meiner Nachricht und kann mir etwas dazu sagen!?

Grüße
Tobias

"Tobias Bergmann" schrieb im Newsbeitrag
news:
Hallo!

Ich habe eine Applikation mit mehreren Threads. In den Threads gebe ich
mit Debug.Writeln Informationen in meine IDE aus, um den Programmablauf
beurteilen zu können.
Manchmal werden Ausgaben aber "verschluckt": der Scrollbar im
Output-Fenster der IDE zuckt kurz, als wàre eine neue Zeile hinzugefügt
worden, aber es kommt keine. Wenn ich Breakpoints auf die
Debug.Writeln-Anweisungen setze, kann ich genau nachvollziehen, dass sie
auch wirklich abgeschickt wurden, aber es kommt eben nichts an.

Wie kann ich das Debug.Writln thread-safe machen? Ein Invoke bietet die
Klasse nicht!

Vielen Dank für Eure Tipps!

Ähnliche fragen