2010-11-18 14 views
1

GUIスレッドでしばらくの間実行するコードがあります(単純化するため、Button_Clickイベントを想定しています)。ユーザーのために「お待ちください」メッセージを表示および非表示にする方法

このメソッドが起動すると、「お待ちください」というメッセージが表示され、作業を続行したいと考えています。仕事が終わったら、私はそのメッセージを隠して続けます。あなたには、いくつかの長い実行中のプロセスを持っている場合は、あなたがやってはいけません

MBox.Show("Please wait..."); 
//do my work... 
MBox.Hide(); 
+0

あなたはメインのUIスレッドで作業したくないです...あなたのインターフェースをロックして、アプリケーションをクラッシュさせるように見せます。何かが些細なことがあれば、常にバックグラウンドスレッドで実行してください。 MessageBoxでは、タスクがどれだけ長く実行されているかをユーザーが知る方法はありません。可能であれば、プログレスバーが必要です。 – Ian

答えて

1

.Net 4を使用している場合は、Taskを実行してバックグラウンドワーカーと作業することができます。そうでない場合はスレッドを実行できますが、同じスレッドであってはいけません。

3

は私がBackgroundWorker(または任意の他のスレッド関連)でこれを行うことができます知っているが、私は期待していたもうよう終え何かがありますこれはUIスレッド内にあります。 BackgoundWorkerで何が問題になっていますか?そのクラスは素晴らしいです!これがWinFormsアプリケーションの場合は、これを使用することをお勧めします。

0

これを行うための独自のフォームを作成することができます。待つことを期待したり、待たなければならない場合には、ユーザーを待たせることに本質的に悪いことはありません。通常のワークフローでは短い待ち時間が必要なアプリケーションがあります。それをバックグラウンドスレッドに配置しても、操作を完了するまで待つ必要があるため、他の操作を行う前にユーザーを助けることはできません。

関連する問題