CEvent

CEventクラスのオブジェクトを表す、「イベント」? 別イベントが発生したことを通知する 1 つのスレッドが同期オブジェクト。イベントは、スレッドがそのタスクを実行する場合する必要がある場合に役立ちます。たとえば、データをデータ アーカイブにコピーするスレッドは新しいデータが利用可能になったら通知する必要があります。CEventオブジェクトを使用して新しいデータが利用可能になったら、コピーのスレッドに通知すると、スレッドそのタスクをできるだけ早く実行することができます。

CEventオブジェクトの 2 種類があります: 手動と自動。マニュアルCEventオブジェクト、他の関数が呼び出されるまでSetEventまたはResetEventを設定状態のままになります。少なくとも 1 つのスレッドが解放された後、自動のCEventオブジェクトは自動的に非シグナル状態 (利用不可) 状態を返します。

CEventオブジェクトを使用するには、それが必要なとき、 CEventオブジェクトを構築します。待機するイベントの名前を指定し、アプリケーション最初それを所有する必要があります。コンス トラクターが返されるときに、イベントをアクセスすることすることができます。SetEvent信号にイベント オブジェクトを呼び出すし、したら、 unlock を呼び出して、制御されるリソースへのアクセス。

CEventオブジェクトを使用する別の方法を制御したいクラスにデータ メンバーとして、 CEvent型の変数を追加することです。制御されるオブジェクトの構築時に、イベントが最初にシグナル状態である場合は、イベントの型オブジェクトを指定する、 CEventデータ メンバーのコンス トラクターを呼び出し、イベント名を (プロセス間にまたがって使う場合)、し、必要なセキュリティ属性。

この方法でCEventオブジェクトによって制御されるリソースにアクセスするには、 CSingleLockいずれかの型の変数を作成する最初 またはCMultiLockを入力 をリソースのアクセス メンバー関数。ロック オブジェクトのLockメンバー関数 (たとえば、 CMultiLock::Lock) を呼び出してください。この時点で、スレッドはリソースへのアクセスを得るためがリソースの解放されるとアクセス、またはリリースされるリソースと時間をリソースへのアクセスに失敗するを待つを待ちます。いずれの場合では、リソースがスレッド セーフな方法でアクセスされました。リソースを解放するには、ロック オブジェクトのロックを解除するメンバー関数 (たとえば、 CMultiLock::Unlock) を使用して、イベント オブジェクトをシグナルSetEventを呼び出すまたはスコープ外には、ロック オブジェクトを許可します。

CEventオブジェクトの使い方の詳細については、参照してください 「マルチ スレッド: 同期クラスの使用方法Visual の C++ プログラマのガイド

#include lt;afxmt.h>

クラス メンバーの |nbsp;基本クラス|階層図(&N)

サンプル特価; MFC サンプル MTGDI(&N)

Index