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]**が、producer スレッドと同じセキュリティ属性が使用されます。この構造体の詳細については、Windows SDK を参照してください。
戻り値
エラーが発生する場合、新しく作成されたスレッドのオブジェクトへのポインター、または [NULL]。
解説
AfxBeginThread の最初の形式はワーカー スレッドを作成します。2 番目のフォームは、ユーザー インターフェイス スレッドまたはワーカー スレッドとして機能する可能性のあるスレッドを作成します。
AfxBeginThread は CWinThread の新しいオブジェクトを作成し、スレッドの実行を開始するには CreateThread 関数を呼び出して、スレッドへのポインターを返します。なんらかの原因でスレッド生成に失敗すると、スレッド生成処理全体をチェックし、すべてのオブジェクトを確実に解放します。スレッドを終了するには、スレッドからを AfxEndThread を呼び出すか、ワーカー スレッドの制御関数からを返します。
マルチスレッドは、アプリケーションによって有効にしてください; それ以外の場合、この関数は失敗します。マルチスレッドを有効にする方法の詳細については、Visual C++ コンパイラ オプションの下に /MD、/MT、/LD (ランタイム ライブラリの使用) を参照してください。
AfxBeginThreadの詳細については、" " マルチスレッド: ワーカー スレッドの作成 と マルチスレッド: ユーザー インターフェイス スレッドの作成を参照してください。
使用例
CSocket::Attachの例を参照してください。
必要条件
ヘッダー: afxwin.h