掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッド処理の中断について (ID:58662)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
度々お世話になります。 CWinThreadクラスのSuspendThread関数でスレッドを中断した場合、 ResumeThread関数で再開できるかと思いますが、 そのままスレッドを終了したい場合どのようにすればよいのでしょうか。 AfxEndThread関数だと、スレッド内部から呼び出さないといけない ようなので、スレッド外部からスレッドを終了する等の方法があれば と思っています。 なお、プログラムの内容は、ダイアログ表示と同時にスレッドを作成し そのスレッドで長い処理が実行されます。 処理実行中に、ダイアログに配置されたボタンを押下することで処理を 中断したいと思っています。(下記にコードを示します。) ちなみに、m_pThread_Main = NULL; で、スレッド処理は終了するのでしょうか? //ダイアログ表示時処理 BOOL CDlg::OnInitDialog() { CDialog::OnInitDialog(); m_pThread_Main = AfxBeginThread( ThreadFunc_Main , this ); //スレッド生成 return TRUE; } UINT CDlg::ThreadFunc_Main( LPVOID pParam ) { ((CDlg*)pParam)->Main(); //メイン処理(長い処理) return 0; //スレッド終了 } void CDlg::Main() { ... 長い処理 ... } void CDlg::OnButtonStop() { m_pThread_Main->SuspendThread(); //スレッドの中断 int ret = AfxMessageBox("中止しますか?",MB_YESNO); if(ret == IDYES) //中止する場合 { //ここでスレッド(m_pThread_Main)を終了したい } else { m_pThread_Main->ResumeThread(); //処理続行 } }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.