CEvent löschen



  • Hallo

    Bei meinem Programm starte ich einen Thread damit das ganze Synchron ablaufen kann. Erstelle ich mir ein CEvent. Dieses Event übergebe ich als Zeiger meiner Threadfunktion. Im Aufruf warte ich nun so lange mit einem SingleLock bis Entweder der Thread über das Event signalisiert fertig zu sein oder bis ein Timeout eingetretten ist. Mein Problem ist nun wenn der Timeout eingetretten ist, wird die Funktion beendet und das Event gelöscht. Wenn nun die Threadfunktionalität endet versucht die das nicht mehr vorhandene Event zu signalisieren. Wie kann ich abprüfen ob das Event überhaupt noch existiert?


  • Mod

    Gar nicht. Du musst eine Logik schaffen in der eben gesichert ist, dass der Event nur gelöscht wird, wenn er nicht mehrbenötigt wird.

    Du könntest den Event z.B. anlegen und das Handle duplizieren. Dann schließt jeder Nutzer (Worker Thread, wartender Thread) das Handle wann er will.

    Oder Du packst das Event in den Thread. Dabb wird es zerstört wenn der Thread zerstört wird, was sicherlich irgendwann passiert.



  • Habe jetzt ne andere Lösung funktioniert aber weiß nun nicht welche eleganter ist deine oder meine. Ich lege das Event mit new an und lösche es nach dem Timeout und setze es auf Null. Im thread setzte ich das Event nur wenn es ungleich NULL ist.


Anmelden zum Antworten