C# 停止执行,直到引发事件
本文关键字:事件 执行 | 更新日期: 2023-09-27 18:19:41
我需要停止程序的执行,直到用户单击按钮。我正在做一个离散的事件模拟,现在的目标是提供简单的图形来说明情况。当模拟到达值得展示的事件时,将调用绘制情况的方法。我需要该方法在用户单击按钮之前不要跳回到模拟核心(仅在到达感兴趣的点时再次调用(。
您可以创建一个方法,该方法将返回一个Task
,该将在下次单击特定按钮时完成,它可以通过使用 TaskCompletionSource
对象来完成。 然后,您可以await
该任务以在单击特定按钮时继续执行方法:
public static Task WhenClicked(this Button button)
{
var tcs = new TaskCompletionSource<bool>();
EventHandler handler = null;
handler = (s, args) =>
{
tcs.TrySetResult(true);
button.Click -= handler;
};
button.Click += handler;
return tcs.Task;
}
这使您能够编写:
DoSomething();
await button1.WhenClicked();
DoSomethingElse();