MFCスレッドが開始、一時停止、再開、終了

* P_myThreadのCWinThread; // スレッドポインタ作成 
= FALSEをBOOL flag_myThreadを; // 終了するか否か

// 静的UINT MyThreadFunction(LPVOID pParam)(クラスを置く)ヘッダファイルで宣言され; // スレッドエントリ関数定義 
UINT CMFCApplication25Dlgを:: MyThreadFunction(LPVOID pParam)// スレッドエントリ機能、具体
{ 
    CMFCApplication25Dlg * DLG =(CMFCApplication25Dlg * )pParam。
     ためINT I = 0 ; I <= 100 ; I ++ 
    { 
        IF(flag_myThread)BREAK ; 

        DLG - > SetDlgItemInt(IDC_STATIC、Iは、);
        スリープ時( 100 ); 
    } 
    p_myThread = NULL; // スレッドまたはスレッド不在キャンセルの終了
    戻り 0 ; 
} 
ボイドCMFCApplication25Dlg :: OnBnClickedButton1()
{ 
    // TODO:この添加コントロール通知ハンドラコードで
    IF(p_myThread == NULL)// どのスレッドが正常に起動していないがある場合 
    {     // スレッド作成および起動 
        p_myThread = AfxBeginThread(MyThreadFunction、(LPVOID)これを); // このスレッドエントリ関数パラメータpParam割り当て 
        flag_myThread = FALSE; 
    } 
    そうでなければ
    { 
        AfxMessageBox(_T(" スレッド開始されています" ));
    }     
} 


ボイドCMFCApplication25Dlg :: OnBnClickedButton2()
{ 
    // TODO:このコントロール通知ハンドラコードを追加
    IF(p_myThread == NULL)// どのスレッドがない場合は、正常に起動
    { 
        AfxMessageBox(_T(" スレッドが存在しません))。
    } 
    
    { 
        p_myThread - > SuspendThread() ; // 、休止サスペンド
    } 
} 


ボイドCMFCApplication25Dlgを:: OnBnClickedButton3()
{ 
    // TODO:この添加コントロール通知ハンドラコード内の
    IF(p_myThread == NULL)// ないスレッドなら打ち上げ成功
    {
        AfxMessageBox(_T(" スレッドが存在しません" )); 
    } 
    
    { 
        p_myThread - > のResumeThreadへの() ; //は継続
    } 
} 


のボイドCMFCApplication25Dlgを:: OnBnClickedButton4()
{ 
    // TODO:このほかのコントロール通知ハンドラコードで
    IF(p_myThread NULL ==)// ないスレッドが正常に起動しない場合
    { 
        AfxMessageBox(_T(" スレッドが存在しない" )); 
    } 
    
    { 
        flag_myThread = TRUE; // 終了
    } 
}

 

おすすめ

転載: www.cnblogs.com/xixixing/p/11949313.html