WinForm C# 等待 5 秒

WinForm C# wait 5 second

对于我的 Win Form 程序,我需要等待 5 秒,但正常的 c# Thread.Sleep(5000); 在 Win Form 中不起作用,所以我尝试了 Task.Delay(5000); 但它仍然不起作用。帮助

public void waitThen();
{
    Task.Delay(5000);
    checkForDone();
}

上面有一个很长的评论线程,但希望一个答案可以为未来的访问者简化...

Task.Delay 是一个异步操作。 (它是否在内部标记为 async 我不能肯定地说,但它是“可等待的”。)你只需要 await 它:

public async Task waitThen()
{
    await Task.Delay(5000);
    checkForDone();
}

另请注意,现在的方法returns是Task不是void。这使您的 waitThen 方法也可等待,因此如果该代码也想等到操作完成后再继续,则使用代码将需要等待它。


but the normal c# Thread.Sleep(5000); doesn’t work in the Win Form

当然有,一直都有。 但是,除非它明确地在单独的线程上完成,否则它也会冻结UI 5 秒。哪个“有效”但肯定不理想。依靠 Task 通常是首选方法。


与上述评论线程相关的旁白:

  • 要使用 Task,您需要 using System.Threading.Tasks;
  • 为了使用 Thread,您需要 using System.Threading;
  • C# 中的方法名称传统上大写:WaitThen