次の方法で共有


AfxBeginThread

更新 : 2010 年 6 月

新しいスレッドを作成します。

CWinThread* AfxBeginThread(
   AFX_THREADPROC pfnThreadProc,
   LPVOID pParam,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);
CWinThread* AfxBeginThread(
   CRuntimeClass* pThreadClass,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);

パラメーター

  • pfnThreadProc
    ワーカー スレッドの制御関数を指します。 NULL は指定できません。 この関数は次のように宣言される必要があります。

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    CWinThread から派生されたオブジェクトの RUNTIME_CLASS

  • pParam
    pfnThreadProc の関数宣言のパラメーターに見られるような、制御関数に渡すパラメーター。

  • nPriority
    スレッドの優先度。 利用できる優先度の一覧と説明については、Windows SDK の「SetThreadPriority」を参照してください。

  • nStackSize
    新しいスレッドのスタック サイズをバイト数で指定します。 0 のときは、スレッドを作成したプロセスのスタック サイズと同じサイズが既定になります。

  • dwCreateFlags
    スレッドの作成を制御する追加フラグを指定します。 このフラグには次の 2 つの値のいずれかを指定できます。

    • CREATE_SUSPENDED   サスペンド カウントを 1 としてスレッドを開始します。 スレッドの実行を開始する前に、m_bAutoDelete または派生クラスのメンバーなどの CWinThread オブジェクトのメンバー データを初期化する場合は、CREATE_SUSPENDED を使用します。 初期化完了後、スレッドを実行するには、CWinThread::ResumeThread を使用します。 スレッドは、CWinThread::ResumeThread が呼び出されるまで実行されません。

    • 0   作成直後にスレッドを開始します。

  • lpSecurityAttrs
    スレッドのセキュリティ属性を指定する SECURITY_ATTRIBUTES 構造体を指します。 NULL のときは、スレッドを作成したプロセスと同じセキュリティ属性を使います。 この構造体の詳細については、Windows SDK を参照してください。

戻り値

新たに作成されたスレッド オブジェクトへのポインター。エラーが発生した場合は NULL となります。

解説

最初の形式の AfxBeginThread はワーカー スレッドを作成します。 2 番目の形式の AfxBeginThread はユーザー インターフェイス スレッドを作成します。

AfxBeginThread は新しい CWinThread オブジェクトを作成し、スレッドを開始するために CreateThread 関数を呼び出します。さらに、スレッドへのポインターを返します。 なんらかの原因でスレッド生成に失敗すると、スレッド生成処理全体をチェックし、すべてのオブジェクトを確実に解放します。 スレッドを終了するにはスレッドの内部から AfxEndThread を呼び出すかワーカー スレッドの制御関数から復帰します。

アプリケーション側でマルチスレッド処理が有効にされている必要があります。そうでない場合、この関数は失敗します。 マルチスレッド処理の有効化の詳細については、「Visual C++ コンパイラ オプション」の「/MD、/MT、/LD (ランタイム ライブラリの使用)」を参照してください。

詳細についてAfxBeginThread、記事を参照してください「マルチ スレッド:ワーカー スレッドを作成するマルチ スレッド:ユーザー インターフェイス スレッドを作成する

使用例

CSocket::Attach」の例を参照してください。

必要条件

**ヘッダー:**afxwin.h

参照

参照

AfxGetThread

概念

MFC マクロとグローバル

履歴の変更

日付

History

理由

2010 年 6 月

コメント再修正nPriorityパラメータが顧客からのフィードバック。

コンテンツ バグ修正