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


当前回答

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

using System.Threading.Tasks;

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

其他回答

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

System.Threading.Thread.Sleep(50);

记住,在主GUI线程中这样做会阻碍GUI的更新(它会感觉“迟缓”)。

只要把;使它也适用于VB.net。

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

using System.Threading.Tasks;

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

既然现在你有了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线程。

Thread.Sleep(50);

在指定的时间内,操作系统不会调度线程执行。该方法将线程的状态更改为包含WaitSleepJoin。

此方法不执行标准的COM和SendMessage抽取。 如果您需要在具有STAThreadAttribute的线程上休眠,但又希望执行标准COM和SendMessage泵送,请考虑使用指定超时间隔的Join方法的一个重载。

Thread.Join