掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッドに関するエラーを解決するには? (ID:69237)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
俺のサンプルは、 UI スレッドで何もしなくても、ワーカースレッドで IDC_COUNTER の表示カウンタが増えていく というもの。IDC_COUNTER は Dialog に貼った Static-Text Control とする。 で、メンバの宣言はほとんどまったく同じだよ。 class CMtdlgDlg : public CDialog { ... // Wizard の出力は省略 private: CWinThread* m_pThread; BOOL m_ExitThread; // volatile が必要な場合あり static UINT ThreadFuncSugar(void* p); UINT ThreadFunc(); }; コンストラクタで m_pThread 等の初期化する部分も省略 ご自分でも既にわかっている、あるいは、瀬戸っぷさんの指摘にあるとおり ・ワーカースレッド開始関数には static または非メンバ関数しか指定できないので ThreadFuncSugar で this を再指定する(このことの是非はおいておき) ・ワーカースレッド関数は UINT を返却する約束であるので ThreadFunc/Sugar は UINT を返すように作るべし ・ワーカースレッドの終了は、スレッド自身の判断で return するよう作るべし (AfxEndThread を明示的に呼ぶと、ローカル変数のデストラクタが呼ばれない) ・ワーカースレッドを、その外から SuspendThread するのはデッドロックの元なので禁じ手 アクセスバイオレーションは CWnd の制約を守っていないから、とか? 単にバグっているだけとか?いかんせんコードがないのでわからない。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.