如何使用延迟方法并等待?
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
将在给定的时间段后完成。如果您只是忽略该任务,那么您实际上什么也没做。 开始任务基本不用时间
如果您 await
从 Delay
返回 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");
}
}
我想让我的程序中的一个序列在继续下一个操作之前休息一下。像这样:
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
将在给定的时间段后完成。如果您只是忽略该任务,那么您实际上什么也没做。 开始任务基本不用时间
如果您 await
从 Delay
返回 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");
}
}