很多時候,當我看到一些多線程代碼時,我在代碼中看到Thread.Sleep()
語句。在多線程應用程序中使用Thread.Sleep的原因是什麼?
我甚至沒有崩潰,我試圖找出問題,這樣評價了大部分的多線程代碼,並慢慢把它和最後一塊時,我增加了一個像聲明:
for (int i = 0; i < 1000000; ++i)
++i;
它沒有崩潰。所以現在我把它取代Thread.Sleep()
,它似乎工作。我無法輕易地將它發佈到這裏,但是正在使用Thread.Sleep()
對於多線程應用程序是必需的嗎?
他們的目的是什麼?如果不使用會導致意想不到的結果嗎?
編輯:順便說一句我正在使用BackgroundWorker
,只在那裏實現我的東西,但不知道是什麼原因造成的。雖然我使用的API是應用程序不是多線程的託管應用程序。因此,舉例來說,我認爲我不能一次在多個線程上調用它的API函數。不確定,但那是我的猜測。
參見[Thread.sleep代碼是一個設計不當的程序的標誌(http://msmvps.com/blogs/peterritchie/archive/2007/04/26/thread-睡眠是-A-籤的-A-設計拙劣的-program.aspx)。 – Alex 2011-03-29 18:29:14