次の方法で共有


CMsgThread クラス

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

クラスは CMsgThread ワーカー スレッド クラスです。このクラスは、キュースレッドに対する要求をキューに入れます。これは、完了を非同期的に行います。 このクラスを使用するには、そのクラスからクラスを派生させ、 CMsgThread::ThreadMessageProc メンバー関数をオーバーライドします。 ThreadMessageProc メンバー関数は、各要求を実行します。 クライアント関数と ThreadMessageProc メンバー関数は、 CMsg オブジェクトのパラメーターの共通定義を共有する必要があります。

ネゴシエートされたメカニズムは、ワーカー スレッドに終了を指示します。 通常、これは CMsg クラスの uMsg メッセージ コードの 1 つの値になります。

派生クラスのデストラクターからこのメッセージを送信し、派生クラスの破棄を完了する前に CMsgThread::WaitForThreadExit メンバー関数を呼び出することをお勧めします。

プロテクト データ メンバー 説明
m_hSem シグナリングに使用されるハンドルを示します。
m_Lock リストへのアクセスを保護します。
m_lWaiting 空きスレッドの待機を示します。
m_ThreadQueue CMsgThread::GetThreadMsg メンバー関数をオーバーライドし、このキュー以外の項目をブロックします。
メンバー関数 説明
CMsgThread CMsgThread オブジェクトを構築します。
CreateThread スレッドを作成します。
GetThreadHandle スレッド ハンドルを取得します。
GetThreadID スレッドの識別子を取得します。
GetThreadPriority 現在のスレッドの優先度を取得します。
PutThreadMsg ワーカー スレッドによる実行要求をキューに入れます。
ResumeThread ワーカー スレッドの操作を続行します。
SetThreadPriority スレッドの優先度を新しい値に設定します。
SuspendThread 実行中のスレッドの操作を中断します。
WaitForThreadExit CMsgThread::SuspendThread メンバー関数の呼び出し後にスレッドが終了するまでブロックします。
オーバーライド可能なメンバー関数 説明
GetThreadMsg 要求を含むキューに登録された CMsg オブジェクトを取得します。
OnThreadInit スレッドでの初期化を提供します。
ThreadMessageProc 要求を処理します。 これは純粋な仮想メンバー関数です。