プログレスバーでキャンセルボタンを押下時に、処理を中断するには?

解決


ダウト  2004-01-21 02:57:41  No: 53088

始めまして。ダウトと申します。
今回は初歩的な質問かもしれないのですが、是非
皆様のアドバイスをいただきたく、質問させていただきます。

VC6.0 でダイアログベースのアプリを作成していて、
主に「計算」ボタンと「終了」ボタン及び「中断」ボタンの
3種のボタンがあります。
計算ボタンを押下すると、入力した値により約4〜10分程度の計算を行うのですが、
その際にプログレスバーを表示しています。
計算時間が長いために、途中で止める場合中断ボタンを押下して、
計算処理を中断させたいのです。
ですが、計算ボタンを押下すると、計算処理を実行しおえるまで中断ボタンが
使用できない状況となっております。
(正しくは、プログレスバー表示中にマウスで中断ボタンをクリックしても、
中断ボタンの処理を通りません。)

なので、計算処理中で中断ボタンが押下されたかという判断する文を設ければ
よいのではないかと考えているのですが、そのやりがわかりません。
粗悪な文章でわかりにくいかもしれませんが、どなたかご教授頂けませんでしょうか。
よろしくお願い致します。


ダウト  2004-01-21 02:59:35  No: 53089

失礼しました。文章の訂正です。
>よいのではないかと考えているのですが、そのやりがわかりません。

よいのではないかと考えているのですが、その「やり方」がわかりません。


シャノン  2004-01-21 05:04:29  No: 53090

簡単な方法としては、その長〜い計算処理中にメッセージ処理( VB でいう DoEvents )を入れてやるというのがあります。
また、面倒ですがオススメな方法は、その長い処理をスレッド化することです。


ダウト  2004-01-21 07:04:51  No: 53091

シャノンさん、返答どうもありがとうございます。

ネットやら参考書やら周りの人々の意見やらで色々調べた結果、
スレッド化する方法が良いと判断しました。
組み込んだところ無事、計算処理の中断が出来ました!
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加