Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CreateEvent und OpenEvent

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.11.2009, 22:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


evtl event nach dem threaderzeugen erst erzeugt? weil sonst kanns dir passieren das er schon im thread den openaufruf macht bevor überhaupt das create da war?

gibts keine fehlercodes? z.b beim openevent? das dieses ein ungültiges handle zurückliefert und man mit getlasterror den fehler abfragen könnte? oder iwas in die richtung
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.11.2009, 23:09 Uhr
cmos



Hallo,
also es lag am flag bei OpenEvent.
Anstatt SYNCHRONIZE musste ich EVENT_ALL_ACCESS benutzen. Dann gehts.

Grüße & Danke,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: