我有一個Winform,需要等待大約3-4個小時。我無法關閉並以某種方式重新打開該應用程序,因爲它在後臺執行某些操作,而它正在等待。Thread.Sleep()睡得更久
爲了實現等待 - 不會對UI線程和其他原因造成麻煩 - ,我有一個BackgroundWorker,我可以發送多少毫秒來等待並在其doWork事件中調用Thread.Sleep(waitTime);
。在backGroundWorker_RunWorkerCompleted
事件中,我會在等待後執行程序應該執行的操作。
這在開發機器上正常工作。即當等待結束時等待結束。但是在測試機器上,它會一直等待更長的時間。它發生兩次,第一次等待超過特定時間1小時,第二次等待大約2小時40分鐘。
難道這有什麼明顯的原因發生,或者我錯過了什麼?
的開發機是Win XP的試機是贏7
爲什麼不使用Timer控件而不是後臺工作器中的thread.sleep? –
同意..計時器應該這樣做 –
爲什麼計時器的準確度比睡眠更好? AFAIK,定時器間隔由線程必須等待的Windows消息隊列上的定時等待實現,因此與sleep()相同。使用定時器會讓調用線程必須運行消息隊列 - 通常這是不可取的。嘗試在沒有使用sleep()的情況下等待一個通信棧內一小時的深度 - 需要痛苦且容易出錯的狀態機。 –