掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッド処理について (ID:58610)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
おせわになります。 ワーカスレッドを以下のように実行しています。 以下のコードでは、画面を表示すると同時に、 Main関数の長い処理を実行し、 処理が終了したら画面を閉じるということをしています。 (長い処理の間、画面中にプログレスバー表示) 以下のコードで、 Windows2000,VC++6.0,CPU(pentium3:750MHz程度) の環境では正常に動作するのですが、 WindowsXP,VC++6.0,CPU(pentium4:3GHz程度) の環境では確実に、ダイアログを閉じるタイミングで プログラムが落ちてしまいます。 最初OSの問題かと思っていましたが、 WindowsXP,VC++6.0,CPU(pentium4:2GHz程度) の環境では正常に動作するので、OSの問題ではないようです。 ということで、CPUがあやしいのではと思い調べたのですが、 エラーが発生する環境のCPUは、最新のCPUで、 「ハイパースレッディングテクノロジー」 が採用されたものですが、何かエラーと関係があるのでしょうか? あと気になっているのは、スレッドを終了する前に、 OnCancel関数により画面を閉じる処理を入れているのですが ここではまずいでしょうか? どなたかご教授願います。 //ダイアログ表示時処理 BOOL CDlg::OnInitDialog() { CDialog::OnInitDialog(); m_pThread_Main = AfxBeginThread(ThreadFunc_Main , this); return TRUE; } //スレッドのスタティック関数 UINT CDlg::ThreadFunc_Main(LPVOID pParam) { ((Cread_pv_result*)pParam)->Main(); ((Cread_pv_result*)pParam)->OnCancel(); //ここではまずい? return 0; } void CDlg::Main() { //スレッドのメイン処理 ... m_pThread_Main = NULL; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.