トップ回答者
VC++ 2010 スレッド作成方法

質問
-
初心者です。
VC++でWindowsフォームアプリを作成し、そこでマルチスレッド処理を行いたいのですが、
スレッドを作成しようとするとエラーが出てしまいます。
何が何だかわからない状態になってしまい投稿させて頂きました。
やりたいことは、
①ダイアログ上のボタン1をクリックするとスレッドを作成して機械の制御を行う為に機械の状態とフラグの状態をポーリングさせます。
②ダイアログ上のボタン2をクリックするとフラグをONにします。
③①のスレッド処理内でフラグが変わると機械にコマンドを送信します。
AfxBeginThreadを使用してみたのですが、「'AfxBeginThread': 識別子が見つかりませんでした」等のビルドエラーが出てしまいます。
afxwin.hをインクルードしてみたのですが、ビルドエラーになってしまいます。
またCreateThreadも試してみたのですが、ビルドは通って実行出来るのですが、
CreateThreadを実行すると、下記のエラーが出てしまいます。
ランタイムの重大なエラーが発生しました。エラーのアドレスは 0x69df502e、スレッド 0x658 です。エラー コードは 0xc0000005 です。これは CLR のバグであるか、またはユーザー コードのアンセーフまたは確認不可能な部分にバグがある可能性があります。このバグの一般的な原因には、スタックが壊れる可能性のある COM-interop または PInvoke のユーザー マーシャリング エラーが含まれています。
スレッドを作成するにはどのクラスを使用すればいいのでしょうか?
回答
-
.NET なのですから、まずは Thread クラス を考えましょう。
AfxBeginThread は MFC アプリケーションで使うための関数です。
CreateThread で問題が出るのは、そのスレッドで .NET 関連の初期化、準備などができていないまま、.NET のコードを実行したことが原因を予想されます。- 編集済み AzuleanMVP, Moderator 2014年11月29日 11:52
- 回答の候補に設定 星 睦美 2014年12月1日 1:45
- 回答としてマーク acm_no9 2014年12月1日 4:09
すべての返信
-
.NET なのですから、まずは Thread クラス を考えましょう。
AfxBeginThread は MFC アプリケーションで使うための関数です。
CreateThread で問題が出るのは、そのスレッドで .NET 関連の初期化、準備などができていないまま、.NET のコードを実行したことが原因を予想されます。- 編集済み AzuleanMVP, Moderator 2014年11月29日 11:52
- 回答の候補に設定 星 睦美 2014年12月1日 1:45
- 回答としてマーク acm_no9 2014年12月1日 4:09