- ベストアンサー
処理途中で終了
いつもお世話になっております! VB6.0でコピーの処理を作っているのですが そのコピー中に終了してメイン画面に 戻るためにコピー処理を途中で終了させたいのですが うまくいきません。どうにかできないでしょうか? 皆さん宜しくお願いします!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VBから離れていく年月なんで、細かいスクリプトは思いだせません。そこはヘルプ等で調べて下さい。 まず、中断ボタンをどこか(処理中にアクセスできる所)につくります。 これが押されたら値が変わる変数(一般にフラグって呼ぶやつでBOOLにすることが多いですね)を用意して、ボタンが押されたときに値を変えるプロシージャを作ります。 コピー処理はループになっていると思いますので、このループの中で先ほどの変数の値を監視します。 ここで大事なのは、変数を調べる前にWindowsの処理待ちを実行させてやることです。スクリプト名は忘れてしまいましたが、調べて下さい。 あとは、変数が変わっていたら、中断処理にとばしてやればいいんです。
その他の回答 (2)
- piyo2000
- ベストアンサー率49% (144/293)
qKAZpさんのおっしゃっているのは"DoEvents"でしょう。 これが無いと、時間が掛かる処理の間は他の処理を受け付けてくれません。 ですのでループ処理の最中にDoEventsを入れます。 ただ、これを入れると確実に速度が遅くなりますので ループを10回消化するごとに1回とか、そういう感じでもいいかもしれません。 DoEventsが無いと、中断ボタンがあったとしても、押したことが検出されるのは時間が掛かる処理が終わった後のはず・・・です。 また、ボタンを押す→ボタンをDisableに→時間が掛かる処理という場合、なぜかボタンのDisableが反映されないことがありますね。 こういうときにDoEventsを使います。 Command1.Enabled=False Doevents '時間の掛かる処理 と書けば、きちんと反映されます。 ロジックはqKAZpさんの紹介した通りでいいと思います。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
何をコピー? どうやってコピー?
お礼
回答ありがとうございます DoEventsは入っていて中断も出来るのですが コピー処理を中断してメイン画面を呼び出したの ですが、その中断の処理が終わった後にコピー処理の 残りが動くのでエラーが出ています。 出来れば中断処理中にフラグを立てたらいったん コピー処理を最後まで動かして、コピー処理を 正常に終了させてから中断処理でメイン画面を 呼び出したいのですが何か方法はありませんか?