掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッドに関するエラーを解決するには? (ID:69231)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になっております.今回は,複数のスレッドを1つのプログラムで扱おうとしています.つぎはぎだらけのプログラムができたのですが,実行後に右上の×ボタンで終了すると,毎回エラーが出てしまいます.以下にプログラムを示しますので,問題点を教えて頂ければと思います. CDlg::CDlg(CWnd* pParent /*=NULL*/) : CDialog(CEvaDlg::IDD, pParent) { //{{AFX_DATA_INIT(CEvaDlg) //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_pThread = NULL; m_bThread = FALSE; } UINT CEvaDlg::PpsnThreadFunc( LPVOID pParam ) { ((CEvaDlg*)pParam)->PpsnThread(); return 0; } void CDlg::OnButtonPpsn() { // TODO: Add your control notification handler code here if ( m_pThread ) return; // スレッド開始 m_bThread = TRUE; m_pThread = AfxBeginThread( PpsnThreadFunc, this );//ThreadFunc が実行されすぐ復帰 } void CEvaDlg::PpsnThread() { for(I=0;I<=512 && m_bThread;I++){ //処理 } AfxEndThread(0); //以前はm_pThread3=NULLとしていてもほぼプログラムは動いていたが,間違っているのですよね? } void CDlg::OnButtonShd() //ここでフラグを立てスレッド自身で終了させる { if(!m_pThread)return; m_pThread->SuspendThread(); m_bThread = FALSE;//以前はm_pThread3=NULL;を入れていたのですが,これも間違っているのですよね? } 以上のようなスレッドを3つ作ったのですが,実行後に×ボタンで終了するとDebug画面には(スレッドの一つを実行し終了した後), The thread 0xD74 has exited with code 0 (0x0). The thread 0x470 has exited with code -1073741819 (0xC0000005). The thread 0xFFC has exited with code -1073741819 (0xC0000005). というメッセージが表示されます.3つのスレッドは各々のボタンを押した時に開始させるようにしているつもりなのですが,他の2つのスレッドも開始されてしまっているのでしょうか.また,スレッドの開始・終了方法は上に示したプログラムで正しいのでしょうか?宜しくお願い致します.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.