- PR -

処理中ダイアログと中断ボタン

1
投稿者投稿内容
なゆき
会議室デビュー日: 2004/02/04
投稿数: 17
投稿日時: 2006-10-25 22:50
よろしくお願いします。

VB.NET2003で業務開発をしています。

内容は、題名通りなのです。
処理が1分以上かかるものがあるのですが、それを処理している間は何をしているか
全く分からなくなるため、処理中のダイアログを表示しておこうと思っています。

そこで、問題が起こりました。
処理中ダイアログを表示するのは問題ないのですが、
ダイアログを表示しても、フォームを更新することができないのです。
表示したダイアログに対して、更新するようなことがあれば、表示してくれてます。
(別の画面でフォームを隠してしまった場合です)

呼び出したフォーム(親フォーム)は、ボタンなどが押せないように、
全てのコントロールを無効にしています。処理が終了すると有効にしています。

いろいろ見たのですが、プログレスバーを表示して表示を更新するのが妥当な方法なので
しょうか?今回の私の場合は、プログレスバーは表示させずに、ただ「処理しています」
と表示するだけなので、更新をかけるタイミングがないのです。

そして、さらに処理させている最中に、処理が長すぎる場合に、中断機能が欲しいと
言われまして、さらに困っています。

皆さんは、長い時間を要する処理のダイアログと中断機能が必要な場合の対処方法は
どうされてますか?
特に、中断ボタンをダイアログに表示してボタンが押下された場合は、処理を中断させる
などの処理はどうされてますか?
アドバイスなどありましたら、宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-25 23:47
引用:

なゆきさんの書き込み (2006-10-25 22:50) より:

処理中ダイアログを表示するのは問題ないのですが、
ダイアログを表示しても、フォームを更新することができないのです。


描画が後回しになされているだけです。
強制的に描画するようにしてあげてください。

引用:

いろいろ見たのですが、プログレスバーを表示して表示を更新するのが妥当な方法なのでしょうか?
今回の私の場合は、プログレスバーは表示させずに、ただ「処理しています」と表示するだけなので、更新をかけるタイミングがないのです。


両者に違いはありません。
(むしろ、進捗バーを表示するパターンの方が難しい場合が多いでしょう)

引用:

そして、さらに処理させている最中に、処理が長すぎる場合に、中断機能が欲しいと言われまして、さらに困っています。


別スレッドにするか、Application.DoEvents メソッドでユーザーからの入力を受け付けるようにしてください。

引用:

皆さんは、長い時間を要する処理のダイアログと中断機能が必要な場合の対処方法は
どうされてますか?
特に、中断ボタンをダイアログに表示してボタンが押下された場合は、処理を中断させるなどの処理はどうされてますか?


過去スレッドに答えがあると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)