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

时间:2015-05-13 18:25:50

标签: c# task-parallel-library

我希望我的程序中的一个序列暂时休息一下,然后继续下一个操作。像这样:

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

2 个答案:

答案 0 :(得分:2)

Task.Delay 返回Task ,将在给定的时间段后完成。如果你忽略了那个任务,那么你实际上什么都没做。 开始任务基本上没有时间。

如果awaitTask返回Delay,则其余代码将在Task实际完成之后才会运行。

答案 1 :(得分:-1)

正如Servy所说,你需要 等待 这样的任务:

解决方案1:

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"); 
   }
}

等待 这样的任务。

解决方案2:

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"); 
   }
}