次の方法で共有


CWinThread クラス

アプリケーション内の実行中のスレッドを表します。

class CWinThread : public CCmdTarget

メンバー

パブリック コンストラクター

名前

説明

CWinThread::CWinThread

CWinThread オブジェクトを構築します。

パブリック メソッド

名前

説明

CWinThread::CreateThread

CWinThread のオブジェクトの実行を開始します。

CWinThread::ExitInstance

、スレッドが終了時の後処理のためにオーバーライドします。

CWinThread::GetMainWnd

スレッドのメイン ウィンドウへのポインターを取得します。

CWinThread::GetThreadPriority

現在のスレッドの優先順位を取得します。

CWinThread::InitInstance

スレッドのインスタンスの初期化のためにオーバーライドします。

CWinThread::IsIdleMessage

特別なメッセージをチェックします。

CWinThread::OnIdle

スレッド固有のアイドル処理のためにオーバーライドします。

CWinThread::PostThreadMessage

CWinThread の別のオブジェクトにメッセージをポストします。

CWinThread::PreTranslateMessage

Windows 関数の TranslateMessageDispatchMessage にディスパッチする前にメッセージにフィルターをかけます。

CWinThread::ProcessMessageFilter

アプリケーションに届く前に、特定のメッセージを受け取ります。

CWinThread::ProcessWndProcException

スレッドのメッセージとコマンド ハンドラーがスローしたすべての未処理の例外を受け取ります。

CWinThread::PumpMessage

スレッドのメッセージ ループが含まれます。

CWinThread::ResumeThread

スレッドを中断してカウントをデクリメントします。

CWinThread::Run

メッセージ ポンプを使ってスレッドの制御関数。 既定のメッセージ ループをカスタマイズするためにオーバーライドします。

CWinThread::SetThreadPriority

現在のスレッドの優先順位を設定します。

CWinThread::SuspendThread

スレッドを中断してカウントをインクリメントします。

パブリック演算子

名前

説明

CWinThread::operator HANDLE

CWinThread のオブジェクトのハンドルを取得します。

パブリック データ メンバー

名前

説明

CWinThread::m_bAutoDelete

スレッドの終了にオブジェクトを破棄するかどうかを指定します。

CWinThread::m_hThread

現在のスレッドへのハンドル。

CWinThread::m_nThreadID

現在のスレッドの ID。

CWinThread::m_pActiveWnd

OLE サーバーが埋め込み先編集が有効な場合のコンテナー アプリケーションのメイン ウィンドウへのポインターです。

CWinThread::m_pMainWnd

アプリケーションのメイン ウィンドウへのポインターを保持します。

解説

実行のメイン スレッドは通常 CWinAppから派生したオブジェクトによって提供されます; CWinAppCWinThreadから派生します。 CWinThread の追加オブジェクトは、特定のアプリケーション内に複数のスレッドができます。

CWinThread がサポートするスレッドの 2 種類の一般的な種類があります: ワーカー スレッドとユーザー インターフェイス スレッド。 ワーカー スレッドにメッセージ ポンプがありません: たとえば、スプレッドシートのアプリケーションでバックグラウンド計算を実行するスレッド。 ユーザー インターフェイス スレッドにシステムから受け取ったメッセージをポンプとプロセスのメッセージがあります。 CWinApp とその派生クラスは、ユーザー インターフェイス スレッドの例です。 ほかのユーザー インターフェイス スレッドは、CWinThreadから直接取得できます。

クラス CWinThread のオブジェクトは、スレッドの期間中、通常、になります。 この動作を変更する場合 FALSEm_bAutoDelete を設定します。

CWinThread のクラスは、コードと MFC スレッド セーフを完全に行う必要です。 スレッド固有の情報を保持するために、フレームワークによって使用されるスレッド ローカル データが CWinThread のオブジェクトによって管理されます。 このため、スレッド ローカル データを MFC で処理 CWinThread へのリンクは、MFC を使用するすべてのスレッド作成する必要があります。 たとえば、ランタイム関数 _beginthread、_beginthreadex によって作成されるスレッドは、MFC の API を使用できません。

スレッドを作成するには、AfxBeginThreadを呼び出します。 ワーカー スレッドまたはユーザー インターフェイスが必要かを 2 とおりの形式が異なります。 ユーザー インターフェイス スレッドを作成するときは、の CWinThreadCRuntimeClassAfxBeginThread 派生クラスにポインターを渡します。 ワーカー スレッドを作成する場合は、制御関数に制御関数およびパラメーターに AfxBeginThread にポインターを渡します。 両方のワーカー スレッドとユーザー インターフェイス スレッドに対して、優先度、スタックのサイズは、作成フラグとセキュリティ属性を変更する省略可能なパラメーターを指定できます。 AfxBeginThreadCWinThread に、新しいオブジェクトへのポインターを返します。

AfxBeginThreadを呼び出す代わりに、CWinThreadの派生オブジェクトを構築し、次に CreateThreadを呼び出すことができます。 この式は階層構造のメソッドは、スレッド実行の継続的な作成と終了時の CWinThread のオブジェクトを再利用する場合に便利です。

CWinThreadの詳細については、" " C++ と MFC によるマルチスレッドマルチスレッド: ユーザー インターフェイス スレッドの作成マルチスレッド: ワーカー スレッドの作成マルチスレッド: 同期クラスの使用方法を参照してください。

継承階層

CObject

CCmdTarget

CWinThread

必要条件

ヘッダー: afxwin.h

参照

関連項目

CCmdTarget クラス

階層図

CWinApp クラス

CCmdTarget クラス