Multithreading-Problem

11/09/2008 - 16:52 von Thorsten Kleibaum | Report spam
Hallo zusammen,

ich werde mal wieder vom Multithreading geàrgert.
Meine Haupt-Anwendung startet einen Thread, der über Polling des Status
eines externen Geràts abfragt.
Wird ein Fehler signalisiert, so wird ein Ereignis gefeuert, über das
ich ein Fenster mit den Fehler-/ Status-Informationen öffnen möchte.
Dieses Fenster soll modal sein, so daß es die Haupt-Anwendung blockiert,
bis der Fehler behoben ist. Daher rufe ich ShowDialog() über Invoke()
aus dem Thread der Hauptanwendung auf.

Im Prinzip klappt das alles auch wunderbar, nur wird bei jedem Eintreten
des Ereignisses das Fenster vier mal Hintereinander angezeigt (es öffnet
sich also neu, wenn der Fehler behoben ist und ich es schließe).
Das Ereignis wird aber definitiv nur einmal gefeuert, die
Behandlungsmethode nur einmal registriert.
Das Verhalten ist auch das Gleiche, wenn ich es aus dem Polling-Thread
heraus aufrufe.

Hab im Moment keine Idee mehr, wo ich suchen soll. Hat vielleicht jemand
'nen Tipp?

Danke
Thorsten
 

Lesen sie die antworten

#1 Thomas Scheidegger
11/09/2008 - 19:25 | Warnen spam
Hallo Thorsten

über Polling des Status eines externen Geràts abfragt.
wird bei jedem Eintreten des Ereignisses das Fenster
vier mal Hintereinander angezeigt



dies liegt garantiert an der Logik deines Source-Codes.


Verhalten ist auch das Gleiche,
wenn ich es aus dem Polling-Thread heraus aufrufe.



vermutlich ist dann das Polling falsch gelöst.
Nur zB: Level-orientiert anstelle Flanken,
oder zeitabhàngig (Pulsweite),
oder gar dein 'externes Geràt' verursacht
selber ~vier Ereignisse (zB Tasten-Prellen oà).




Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen