AfxBeginThread
この関数を呼び出して、新しいスレッドを作成します。
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 つの値の 1 つを含めることができます。CREATE_SUSPENDED 中断カウントを 1 としてスレッドを開始します。 スレッドが実行を開始する前に m_bAutoDelete などのような CWinThread オブジェクトのメンバー データまたは派生クラスのメンバーを初期化する場合は、CREATE_SUSPENDED を使用します。 初期化が完了したら、CWinThread::ResumeThread を使用して、スレッドの実行を開始します。 CWinThread::ResumeThread が呼び出されるまでは、スレッドは実行されません。
0 作成直後にスレッドを開始します。
lpSecurityAttrs
スレッドのセキュリティ属性を指定する SECURITY_ATTRIBUTES 構造体をポイントします。 NULL である場合、スレッドの作成と同じセキュリティ属性が使用されます。 この構造体の詳細については、Windows SDK を参照してください。
戻り値
エラーが発生した場合、新しく作成されたスレッドのオブジェクトまたは NULL をポイントします。
解説
AfxBeginThread の最初のフォームはワーカー スレッドを作成します。 2 番目のフォームは、ユーザー インターフェイス スレッドまたはワーカー スレッドとして機能可能なスレッドを作成します。
AfxBeginThread は、新しい CWinThread オブジェクトを作成し、CreateThread 関数を呼び出してスレッドの実行を開始し、スレッドへのポインターを返します。 なんらかの原因でスレッド生成に失敗すると、スレッド生成処理全体をチェックし、すべてのオブジェクトを確実に解放します。 スレッドを終了するには、スレッド内から AfxEndThread を呼び出すか、またはワーカー スレッドの制御関数から戻ります。
マルチスレッドは、アプリケーションによって有効化される必要があります。それ以外の場合、この関数は失敗します。 マルチスレッドを有効にする方法の詳細については、Visual C++ コンパイラ オプションの「/MD、/MT、/LD (ランタイム ライブラリの使用)」を参照してください。
AfxBeginThread の詳細については、「マルチスレッド: ワーカー スレッドの作成」および「マルチスレッド: ユーザー インターフェイス スレッドの作成」の記事を参照してください。
使用例
CSocket::Attach の例を参照してください。
必要条件
ヘッダー: afxwin.h