0

データベースへのデータのアップロードが完了すると発生するイベントにサブスクライブされるメソッド UploadReportNotifier() があります。UploadReportNotifier() で、GUI のいくつかの値、つまりプログレスバーなどをリセットしたいのですが、これを行う間に時間の遅延が必要です。

UploadReportNotifier() 内にスレッドを作成して thread.Sleep を呼び出すことは可能ですか、それとも timer() クラスの方が適切ですか?

ご協力いただきありがとうございます。

4

2 に答える 2

2

の実行後、すべての GUI コントロールを更新する前に数時間待機することが目標である場合はUploadReportNotifier、タイマーが適切なソリューション IMO になります。

メソッドでは、UploadReportNotifierタイマーを作成して開始できるため、「GUI の更新」コードは数時間後に実行されます。おそらく複数回実行したくないので、GUIの更新後にタイマーを停止/破棄することを忘れないでください。

timer クラスを使用できますSystem.Windows.Forms.Timer(ご存じのとおり、複数のタイマー クラスが利用可能です)。これは最も正確なものではありませんが、UI スレッドでコードを実行するため、UI を変更するときにクロススレッド例外を処理しません。

于 2012-06-12T12:00:37.823 に答える
1

解決策を見つけたようです。Threadこの状況では、常に+よりもタイマーを選択する必要があることに言及したいだけです。これSleepは、常に回避する必要がある醜いハックです。

タイマーは、GUI スレッドでコードを実行することもできるので優れているため、Invokeまたはを使用する必要はありませんBeginInvoke。たとえばSystem.Windows.Forms.Timer、WinForms またはSystem.Windows.Threading.DispatcherTimerWPF の場合。

于 2012-06-12T12:01:14.127 に答える