我如何让我的c#程序睡眠(暂停执行)50毫秒?


当前回答

既然现在你有了async/await特性,那么最好的睡眠50ms的方法就是使用Task。延迟:

async void foo()
{
    // something
    await Task.Delay(50);
}

或者如果你的目标是。net 4(使用VS2010的Async CTP 3或Microsoft.Bcl.Async),你必须使用:

async void foo()
{
    // something
    await TaskEx.Delay(50);
}

这样你就不会阻塞UI线程。

其他回答

既然现在你有了async/await特性,那么最好的睡眠50ms的方法就是使用Task。延迟:

async void foo()
{
    // something
    await Task.Delay(50);
}

或者如果你的目标是。net 4(使用VS2010的Async CTP 3或Microsoft.Bcl.Async),你必须使用:

async void foo()
{
    // something
    await TaskEx.Delay(50);
}

这样你就不会阻塞UI线程。

可读性:

using System.Threading;
Thread.Sleep(TimeSpan.FromMilliseconds(50));

使用这段代码

using System.Threading;
// ...
Thread.Sleep(50);

从.NET Framework 4.5开始,你可以使用:

using System.Threading.Tasks;

Task.Delay(50).Wait();   // wait 50ms

在Windows中无法指定确切的睡眠时间。你需要一个实时的操作系统。最好的方法是指定一个最小睡眠时间。然后由调度器在此之后唤醒线程。永远不要在GUI线程上调用. sleep()。