kernel32.dll Sleep和Thread.Sleep()之间的任何区别

时间:2011-03-01 10:05:57

标签: c# multithreading sleep wait kernel32

以下内容之间是否存在任何差异(性能,实施.whatever):

i)个

DllImport("kernel32.dll")]
        public extern static void Sleep(uint msec);

..然后调用睡眠功能

ⅱ)

Thread.Sleep()

2 个答案:

答案 0 :(得分:2)

实际上有很大的不同。

This blog post解释了为什么托管线程永远不应该进行非托管阻塞。 official MSDN documentation具有相同的准则,没有所有基础细节。

P.S。 Thread.Sleep is a sign of a poorly-designed program

答案 1 :(得分:-1)

我不这么认为。它们都只在当前线程上工作。

当在主线程中使用Sleep功能时要小心,因为依赖于同步时序的程序通常会在外部配置发生变化时引起问题。

在支持或侦听线程中使用Sleep通常不是问题。