おすすめのモーニング・朝食メニューを教えて!

VC++6.0でwinアプリを作っています。
ダイアログベースで、ボタンを押すとワーカースレッドを実行し、ここでデータ処理をしています。
もし、スレッド中でデータ処理時間がかかってしまうと、これをスレッド外で強制的に終了させたいですが、出来るのでしょうか。

よろしくお願いします。

A 回答 (3件)

>これをスレッド外で強制的に終了させたい


とういうことですが、もしこれを行うと、強制終了させられたスレッドは正規の終了手続きを踏まずに終了します。
そのため、確保したリソースの解放漏れ等が発生しますので、できたらしない方が良いと考えます。
最も簡単な方法は、(ワーカスレッドの作り方にも依存しますが)、フラグによる制御です。
ボタンが押された時、メインスレッドがフラグをオンします。(最初はオフ)
ワーカスレッドは一定間隔(ループしているならループの途中で)で、フラグがオンかどうかをチェックし、オンの場合は自らすみやかに終了するようにします。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
前後の状況を見ましたら、tatsu99さんのおっしゃった通り、確保したメモリが正しく解放されない問題が発生することが分かりました。
教えて頂いたように、フラグで制御しようと思います。
有難うございました。

お礼日時:2004/03/17 00:15

スレッドを「強制的に」終了させるには TerminateThread 関数を使う。


「強制的に」終了させるのでヘルプにも「危険な関数」などと書かれていたりするけれども、
問いは「強制的に終了させたい」だから、これでいいよね?
    • good
    • 0

できます。



問いは「できるのでしょうか」だから、これでいいよね?

この回答への補足

ご回答有難うございます。
出来るならば、方法を教えていただけませんか。
可能でしたらソースコードもお願いします。

補足日時:2004/03/16 16:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報