• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スレッドについて)

スレッドの処理を待つ方法について

このQ&Aのポイント
  • 簡単なスレッド作り、スレッドの処理が終わってからメインの処理を行わせるため、WaitForSingleObjectを使ってスレッドの終了を待ちたいが、うまく動作しない
  • WRITE関数の処理が終わったらWaitForSingleObjectで処理が戻ってくると考えているが、表示されないエラーメッセージで問題が発生している
  • スレッドについて勉強中で、正しい方法や間違いを教えてほしい

質問者が選んだベストアンサー

  • ベストアンサー
  • yuu_yuu
  • ベストアンサー率41% (34/81)
回答No.1

まず、上に日本語で書かれているようなロジックになっていません。 main関数の最初のif文(if(!stop))で、 thenのとき スレッド生成        ※g_stopがtrueにならないので、スレッド内で無限ループ elseのとき スレッドの終了を待つ(WaitForSingleObject)        ※スレッドは生成されていない となっています。 上の問題が解決しても、まだ他の問題が出てきそうですが。。。

delsole_
質問者

補足

すみません…書き間違いです。 正確にはメインではなく、ボタンが押された場合なので 一度目にボタンが押されたら stop = false 二度目にボタンが押されたら stop = true になります。 if文も間違えてしまっています。すみません。

その他の回答 (1)

  • yuu_yuu
  • ベストアンサー率41% (34/81)
回答No.2

#1です。 >一度目にボタンが押されたら stop = false >二度目にボタンが押されたら stop = true になります。 そうでしたか!! >if文も間違えてしまっています。 提示されているロジックには、if文一つしかありませんが、そこ以外のif文が間違えていたのでしょうか?? 後少し気になったのが、 g_hThead = CreateThread(NULL,0,WRITE,(LPVOID)NULL,0,NULL); g_stop = false;    ↓ g_stop = false; g_hThead = CreateThread(NULL,0,WRITE,(LPVOID)NULL,0,NULL); にした方が良いと思います。

delsole_
質問者

補足

指摘の通りそれは一度目は初期化しているの問題になりませんが 2度目以降は問題になるところだと思います。 ご指摘ありがとうございました。 VC関係の掲示板のサイトにも質問を記入してしまいましたので、 一箇所に纏める意味とマナーが悪いということもあってそちらに移りたいと思います。 http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200803/08030079.txt 回答ありがとうございました。

関連するQ&A