CEvent

Ein Objekt der Klasse CEvent stellt ein "Ereignis" dar-ein Synchronisierungsobjekt, das ermöglicht einem Thread zu einem anderen zu benachrichtigen, die ein Ereignis aufgetreten ist. Ereignisse sind hilfreich, wenn ein Thread, wann seine Aufgabe auszuführen wissen muss. Beispielsweise müsste ein Thread, der Daten in einem Datenarchiv kopiert benachrichtigt werden, wenn neue Daten verfügbar sind. Mit einem CEvent -Objekt den Kopie-Thread benachrichtigt, wenn neue Daten verfügbar sind, kann der Thread seine Aufgabe so schnell wie möglich durchführen.

CEvent -Objekte verfügen über zwei Typen: manuelle und automatische. Ein Handbuch CEvent Objekt bleibt im Zustand von SetEvent oder ResetEvent festgelegt werden, bis die andere Funktion aufgerufen wird. Eine automatische CEvent -Objekt wird automatisch in einen nicht signalisiert (nicht verfügbar) Zustand nachdem mindestens ein Thread freigegeben wird.

Um ein CEvent -Objekt verwenden, erstellen Sie das CEvent -Objekt wenn es benötigt wird. Geben Sie den Namen des Ereignisses gewartet werden soll, und Ihre Anwendung sollte zunächst selbst. Sie können dann das Ereignis, wenn der Konstruktor gibt zurück zugreifen. Rufen Sie SetEvent Signal (verfügbar zu machen) das Ereignisobjekt und Unlock dann aufrufen, wenn Sie fertig sind auf die gesteuerte Ressource zugreifen.

Eine alternative Methode zum verwenden CEvent Objekte ist eine Variable des Typs CEvent als Datenmember der Klasse hinzu, die Sie steuern möchten. Während des Baus des kontrollierten Objekts den Konstruktor von der CEvent -Datenmember angeben, wenn das Ereignis anfänglich signalisiert ist, der Typ des Ereignisses Objekt Sie aufrufen möchten, den Namen des Ereignisses (falls es über Prozessgrenzen hinweg verwendet wird), und die gewünschten Sicherheitsattribute.

Um Zugriff auf eine Ressource gesteuert, indem ein CEvent -Objekt auf diese Weise erstellen Sie zunächst eine Variable des Typs CSingleLock , oder geben Sie CMultiLock in Ihre Ressource Zugriff Member-Funktion. Rufen Sie dann das Lock-Objekt Lock -Memberfunktion (z. B. CMultiLock::Lock). An dieser Stelle wird der Thread entweder auf die Ressource zugreifen, warten, bis die Ressource freigegeben werden und Zugriff, oder warten, bis die Ressource freigegeben werden und die Zeit aus, nicht auf die Ressource zugreifen. In jedem Fall wurde die Ressource in einer threadsicheren Weise abgerufen. Um die Ressourcen freizugeben, rufen Sie SetEvent signalisieren das Ereignisobjekt, und verwenden Sie dann das Sperrobjekt Unlock -Member-Funktion (z. B. CMultiLock::Unlock), oder lassen das Lock-Objekt außerhalb des Gültigkeitsbereichs fallen.

Weitere Informationen zur Verwendung von CEvent Objekte finden Sie im Artikel Multithreading: Verwendung die Synchronisierungsklassen im Visual C++ Programmer's Guide.

# include lt;afxmt.h>

Klassenmember |nbsp; Basisklasse | Hierarchiediagramm

Beispiel&Nbsp; MFC MTGDI-Beispiel

Index