GK2*_*K28 3 .net c# loops async-await
我有一个在初始化组件之后调用的方法,方法签名如下:
public async void method_name ()
{
// code ...
}
Run Code Online (Sandbox Code Playgroud)
在该方法中,我有一个循环运行4个不同的if语句.我需要循环暂停每个if语句并等待用户按下按钮.由于按下该按钮将添加信息和内容.按下按钮后,我希望循环继续,当然会在下一个if语句处暂停.
我想这样做await Task.Delay(30000);但是如果用户在定时器结束之前完成输入信息,他/她就会等待.而那效率不高.
你可以这样做TaskCompletionSource.创建它并等待其Task属性,当单击一个按钮时,使用它来完成该任务.这允许异步地等待用户输入而不阻塞线程或使用Task.Delay.
TaskCompletionSource<bool> _tcs;
async Task Foo()
{
// stuff
_tcs = new TaskCompletionSource<bool>();
await _tcs.Task
// other stuff
}
void ButtonClicked(object sender, EventArgs e)
{
_tcs.SetResult(false);
}
Run Code Online (Sandbox Code Playgroud)