000
09.11.2009, 20:14 Uhr
cmos
|
Hallo, ich habe eine Frage zu Events.
Ich habe eine Klasse die etwas verwaltet. In ihr lege ich auch ein paar Events an.
Code: |
HANDLE hSendEvent = ::CreateEvent(NULL, NULL, NULL, "sendevent"); ...
|
In einer anderen Klasse wird ein Thread erzeugt. In der Thread prozedur hole ich mir den Handle des erzeugten Events mit...
Code: |
HANDLE hSend = ::OpenEvent(SYNCHRONIZE, TRUE, "sendevent");
|
in dieser Threadprozedur frage ich immer ab, ob das event eingeleitet wurde
Code: |
... while(TRUE) { ... if(::WaitForSingleObject(hSend, 10) == WAIT_OBJECT_0) { ...mach was } }
|
Jetzt kommt mein Problem. Wenn ich jetzt dieses Event setze, passiert nichts. Es wird nicht gemerkt, das dieses Event ausgelöst wurde.
Wenn das Event in der selben Klasse enthalten ist z.b. als Membervariable und ich mir das in der Threadprozedur über OpenEvent hole, also den Handle, dann wird ein ausgelöstes Event erkannt. Z.b. um den Thread zu stoppen, habe ich in der Klasse, die den Thread erzeugt ein HANDLE hStop beim threaderzeugen erzeugt. In der Threadprozedur hole ich mir dann das HANDLE mit OpenEvent.
Habe ich etwas vergessen oder falsch gemacht ?
Grüße, cmos |