我有一个方法 UploadReportNotifier() 订阅了一个事件,一旦我完成将数据上传到数据库,就会引发该事件。在 UploadReportNotifier() 中,我想重置我的 GUI 上的一些值,即进度条等,但我希望在执行此操作之间有一个时间延迟。
是否可以在 UploadReportNotifier() 中创建一个线程并调用 thread.Sleep,或者 timer() 类更合适?
谢谢你的帮助。
我有一个方法 UploadReportNotifier() 订阅了一个事件,一旦我完成将数据上传到数据库,就会引发该事件。在 UploadReportNotifier() 中,我想重置我的 GUI 上的一些值,即进度条等,但我希望在执行此操作之间有一个时间延迟。
是否可以在 UploadReportNotifier() 中创建一个线程并调用 thread.Sleep,或者 timer() 类更合适?
谢谢你的帮助。
如果您的目标是在执行后等待一段时间UploadReportNotifier
再更新所有 GUI 控件,那么计时器将是 IMO 的一个很好的解决方案。
在您的UploadReportNotifier
方法中,您可以创建并启动一个计时器,以便您的“更新我的 GUI”代码将在一段时间后执行。不要忘记在您的 GUI 更新后停止/处置您的计时器,因为您可能不希望它被多次执行。
您可以使用System.Windows.Forms.Timer
计时器类(您可能知道,有多个计时器类可用)。这个不是最准确的,但是它在 UI 线程中执行代码,所以你在修改 UI 时不会处理跨线程异常。
我看到你已经找到了你的解决方案。我只想提一下,在这种情况下,您应该始终选择计时器而不是Thread
+ Sleep
,这只是一个丑陋的 hack,应该始终避免。
计时器很棒,因为它们还能够在 GUI 线程上执行它们的代码,所以你不需要使用Invoke
or BeginInvoke
。例如System.Windows.Forms.Timer
对于 WinForms 或System.Windows.Threading.DispatcherTimer
WPF。