很多时候,当我看到一些多线程代码时,我在代码中看到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