2011-08-02 9 views
1

は、私はこのようなスレッドを持っている「作品」を実行するスレッドを終了は正しく

DWORD thread_id; 
CreateThread(0, 0, message_loop_thread, 0, 0, &thread_id); 

これが動作しているようですが、どのように私が正しくすることができますこのスレッドを閉じますか?通常、スレッドはGetMessageを待っているので、スレッドはブロックされていると思います。

これを行うには良い方法がありますか?私はTerminateThreadを試しましたが、これはハングアップし、スレッドを止める良い解決策ではないと思います。

アイデアはありますか?

よろしく Benjマイヤー

+0

あなたが何をしていないのか分からない限り、 'CreateThread()'は使わないでください。 'CreateThread()'はランタイムを適切に初期化しませんし、スレッドが終了したときに実行するCRTファイナライズフックも設定しません。ここでの議論を参照してください:http://stackoverflow.com/questions/331536/windows-threading-beginthread-vs-beginthreadex-vs-createthread-c –

答えて

3

適切な方法は、thread_idWM_QUITを投稿することです。これにはPostThreadMessage()を使用します。応答では、GetMessageが0を返し、whileループが終了し、関数が終了します(間違って、return文がありません)。スレッドのトップレベル機能が終了すると、スレッドは終了します。

+0

これは働いた。ありがとう。 –