如何使用延迟方法并等待?

How can I use Delay method and await?

我想让我的程序中的一个序列在继续下一个操作之前休息一下。像这样:

string s = HD.Text;

if (s.Contains("php")||s.Contains("echo"))
{ 
    HD.Text = "this okay ?";
    MessageBox.Show("Its Php ?","Gus"); 
}

我试过这个:

if (s.Contains("php")||s.Contains("echo"))
{
   HD.Text = "this php ?";
   Task.Delay(TimeSpan.FromSeconds(10));
   MessageBox.Show("Its Php ?","Guss"); 
}

但是没用。它抛出以下异常:

Cannot find type System.Resources.ResourceSet in module mscorlib.dll

Task.Delay returns a Task 将在给定的时间段后完成。如果您只是忽略该任务,那么您实际上什么也没做。 开始任务基本不用时间

如果您 awaitDelay 返回 Task,那么您的代码的其余部分将 运行 直到 Task 实际完成。

正如 Servy 所说,您需要像这样 等待 任务:

解决方案一:

public async Task Do()
{
   if (s.Contains("php")||s.Contains("echo"))
   { 
        HD.Text = "this php ?";
        await Task.Delay(TimeSpan.FromSeconds(10));
        MessageBox.Show("Its Php ?","Guss"); 
   }
}

等待这样的任务。

方案二:

public void Do()
{
   if (s.Contains("php")||s.Contains("echo"))
   { 
        HD.Text = "this php ?";
        Task.Delay(TimeSpan.FromSeconds(10)).Wait();
        MessageBox.Show("Its Php ?","Guss"); 
   }
}