2012-06-12 92 views
0

我有一個方法UploadReportNotifier(),它訂閱了一個事件,當我完成將數據上傳到數據庫後引發該事件。在UploadReportNotifier()我想重置我的GUI上的一些值,即進度條等,但我希望有這樣做之間的時間延遲。在任務中創建一個線程

是否有可能在UploadReportNotifier()中創建一個線程並調用thread.Sleep,或者timer()類更合適?

感謝您的幫助。

回答

1

我看到你找到了你的解決方案。我只想提一提,在這種情況下,你應該總是選擇超過Thread + Sleep的定時器,這是一種應該總是避免的醜陋攻擊。

定時器非常棒,因爲它們也能夠在GUI線程上執行它們的代碼,因此您不需要使用InvokeBeginInvoke。例如WinForms的System.Windows.Forms.Timer或WPF的System.Windows.Threading.DispatcherTimer

+0

我以爲我有,但它的方式奠定了它不工作,所以我錯了。 –

+0

看起來你和Ken2K都建議定時器,所以我會選擇這個選項。謝謝你的幫助。 –

2

如果您的目標是在更新所有GUI控件之前等待UploadReportNotifier執行後等待幾個時間,那麼計時器將是IMO的一個很好的解決方案。

在你的UploadReportNotifier方法中,你可以創建並啓動一個計時器,這樣你的「更新我的GUI」代碼將在幾次之後執行。不要忘記在GUI更新後停止/處理定時器,因爲您可能不希望它多次執行。

您可以使用System.Windows.Forms.Timer計時器類(您可能知道,有多個可用的計時器類)。 這不是最準確的一個,但它在UI線程中執行代碼,因此在修改UI時不會處理跨線程異常。

+0

非常感謝Ken,非常感謝! –

相關問題