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
对于我的 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