【发布时间】:2019-05-09 09:37:25
【问题描述】:
例如,我有几行代码:
MessageBox.Show("1");
Sleep(1000);
MessageBox.Show("2");
Sleep(1000);
MessageBox.Show("3");
我想在不使用Thread.Sleep 的情况下继续下一个代码行之前暂停 1 秒;因为它冻结了整个表单并终止了应该在睡眠代码之前执行的代码行。我不为此使用消息框,我仅用作示例,我知道它适用于这些。
对于我最初使用的行,它不起作用。在继续运行代码之前是否有其他替代方法可以等待 1 秒?谢谢。
【问题讨论】:
-
是的,让你的方法异步并使用
await Task.Delay(1000) -
“还有其他选择吗” - 很多。
async/await可能是最好的。如果您可以将操作拆分为多个步骤,那么Timer可以做到。如果您想避免 UI 冻结,请研究多线程:Task、Thread、BackgroundWorker等。 -
您应该提供更多信息。请张贴您的方法的签名,并告诉我们您正在使用哪种 UI 技术。 WPF、WinForms 等...