0

我有一个方法 UploadReportNotifier() 订阅了一个事件,一旦我完成将数据上传到数据库,就会引发该事件。在 UploadReportNotifier() 中,我想重置我的 GUI 上的一些值,即进度条等,但我希望在执行此操作之间有一个时间延迟。

是否可以在 UploadReportNotifier() 中创建一个线程并调用 thread.Sleep,或者 timer() 类更合适?

谢谢你的帮助。

4

2 回答 2

2

如果您的目标是在执行后等待一段时间UploadReportNotifier再更新所有 GUI 控件,那么计时器将是 IMO 的一个很好的解决方案。

在您的UploadReportNotifier方法中,您可以创建并启动一个计时器,以便您的“更新我的 GUI”代码将在一段时间后执行。不要忘记在您的 GUI 更新后停止/处置您的计时器,因为您可能不希望它被多次执行。

您可以使用System.Windows.Forms.Timer计时器类(您可能知道,有多个计时器类可用)。这个不是最准确的,但是它在 UI 线程中执行代码,所以你在修改 UI 时不会处理跨线程异常。

于 2012-06-12T12:00:37.823 回答
1

我看到你已经找到了你的解决方案。我只想提一下,在这种情况下,您应该始终选择计时器而不是Thread+ Sleep,这只是一个丑陋的 hack,应该始终避免。

计时器很棒,因为它们还能够在 GUI 线程上执行它们的代码,所以你不需要使用Invokeor BeginInvoke。例如System.Windows.Forms.Timer对于 WinForms 或System.Windows.Threading.DispatcherTimerWPF。

于 2012-06-12T12:01:14.127 回答