繁体   English   中英

C#暂停循环并在单击按钮后继续

[英]C# Pause the loop and continue after button is clicked

我有一个在初始化组件之后调用的方法,方法签名如下:

public async void method_name ()
{
    // code ...
}

在该方法中,我有一个循环运行4个不同的if语句。 我需要循环暂停每个if语句并等待用户按下按钮。 由于按下该按钮将添加信息和内容。 按下按钮后,我希望循环继续,当然会在下一个if语句处暂停。

我想这样做await Task.Delay(30000); 但是如果用户在该计时器结束之前完成输入信息,他/她就会等待。 而那效率不高。

你可以使用TaskCompletionSource做到这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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM