使用Thread.Sleep的Task.Factory.StartNew等待x秒

时间:2013-10-16 09:24:12

标签: c# multithreading task-parallel-library

在继续使用其他方法并且不冻结我的UI之前,我可以做一些类似的事情,例如5秒钟,等等吗?

System.Threading.Tasks.Task.Factory.StartNew(() =>
{
    System.Threading.Thread.Sleep(5000);
    // Code to do some method
});

2 个答案:

答案 0 :(得分:8)

您应该使用:

await Task.Delay(5000);

答案 1 :(得分:1)

建议不要

Thread.Sleep()。在5秒内阻止线程/任务是没有用的。

@Jeroen van Langen's answer中所述,await Task.Delay()是最好的方法。但是,如果由于某种原因您无法使用async/await机制,则第二个最佳选择是设置一次性5秒计时器。 WinForms为Windows.Forms.Timer,WPF为DispatcherTimer

Task.Delay()依次由计时器实现。)