Search code examples
c#multithreadingsleepwaitkernel32

Any difference between kernel32.dll Sleep and Thread.Sleep()


Is there any difference(performance, implementation. .whatever) between the following:

i)

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

..then call Sleep function

ii)

Thread.Sleep()

Solution

  • There's a big difference, actually.

    This blog post explains why managed threads should never do unmanaged blocking, if possible. The official MSDN documentation has the same guideline without all the underlying details.

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