0

私はGUIを持っています。ボタンを押すと、GUIがソフトウェアと対話します。数秒かかります。この間、GUIの前にダイアログボックスやポップアップなどを表示して、ユーザーに(メッセージとともに)待つように指示します。GUIとソフトウェアの対話が終了すると、ポップアップが自動的に閉じ、ユーザーは再び通常どおりGUIと対話できます。

それを行う方法はありますか?

4

3 に答える 3

4

トリックは、UI スレッドを拘束しないようにスレッドをスピンオフすることです。これは通常、BackgroundWorkerを介して実現されます。

これらすべてを codeplex でセットアップするためのウォークスルーがあります。バックグラウンドワーカーが完了すると、読み込みフォームが閉じます。

于 2013-02-21T16:53:50.483 に答える
1

これは、BackgroundWorkerコンポーネントを使用して実行する方法を簡単に示しています。

フォームにBackgroundWorkerを配置し、ボタンのクリックハンドラーで、現在のフォームの上にポップアップインジケーターフォームを表示し、RunWorkerAsyncメソッドを使用してワーカーを起動します。ワーカーのDoWorkイベントを処理し、それをハンドラーとして、長時間実行されるタスクを実行します。また、ワーカーの完了したイベントを処理し(正確にどのように呼び出されるかはわかりません)、その中でポップアップフォームを非表示にします。DoWorkイベントeventargs(Resultプロパティ)で操作結果を追跡できます。また、完了したイベントeventargのErrorperopertyを使用して、長時間実行タスク中の例外をキャッチできます。操作の進行状況は、ワーカーのReportProgressメソッドを使用してDoWorkハンドラーで報告でき、ワーカーの対応するイベントを使用してGUIでキャッチできます。

于 2013-02-21T17:00:25.093 に答える
0

長時間実行される操作の前にマウスカーソルを待機するように設定することもできます

this.Cursor = Cursors.WaitCursor;

そして通常に戻るよりも、それで終わりです

this.Cursor = Cursors.Default;
于 2013-02-21T16:56:51.100 に答える