kernel32.dll中的Sleep和Thread.Sleep()之间有什么区别吗?

5
有没有以下内容之间的任何差异(性能、实现等):
i)
DllImport("kernel32.dll")]
        public extern static void Sleep(uint msec);

然后调用 Sleep 函数。

ii)

Thread.Sleep()

2
明显的区别在于一个被设计用于本地代码,另一个则是针对.NET Framework的托管代码。除了这个区别,您还想了解什么? - Cody Gray
我们需要考虑使用备选形式吗?或者两者都能达到目的? - Shamim Hafiz - MSFT
2
不,当你编写C#代码时,你永远不需要从kernel32.dll中P/Invoke SleepThread.Sleep完全可以胜任,并且是首选方法。 - Cody Gray
6
你关心_Sleep_的表现? - H H
2个回答

2

同意。当然,我为什么想要对托管线程进行未管理的阻塞是超出我的理解范围的。 - Cody Gray

-1

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

但是请注意,在主线程中使用Sleep函数时要小心,因为依赖于同步定时的程序通常会在外部配置更改时出现问题。

在支持或监听线程中使用Sleep通常不会有问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接