等待n秒,然后下一行代码没有冻结形式

Sam*_*Sam 17 c# timer delay wait

嗨我想找到一个等待几毫秒的方法,然后再转到下一行代码,

我已经研究过Thread.Sleep,但这会冻结主窗体,我希望它保持活跃状态​​.

我尝试了定时器和秒表,当他们勾选时应该将它们发布到控制台时冻结主表单.

我找不到在我想要的等待中使用task.delay或后台工作者的方法.

伪代码:

Wait 2 - 6 seconds
Log "waiting"
Log "waiting"
Log "waiting"
Stop Waiting - Run next line of code.
Run Code Online (Sandbox Code Playgroud)

我尝试过的方法只是冻结表单并在之后填充日志,我只想要一个简单的等待方法而不冻结表单而不必处理被调用的事件,这意味着下一行不会运行.

任何帮助都会很棒,因为我还是c#的新手,它让我有点生气:(

Ser*_*rvy 27

await关键字,会同Task.Delay使这个微不足道的.

public async Task Foo()
{
    await Task.Delay(2000);
    txtConsole.AppendText("Waiting...");
    DoStuff();
}
Run Code Online (Sandbox Code Playgroud)

  • @Sam你当然不会*有*.您可以使用`Task.Delay(2000).ContinueWith(t => DoStuff(),...,Task.Factory.FromCurrentSynchronizationContext());`而不是``await`最终将重构它. (4认同)