[英]C# stop execution until an event raises
我需要停止執行程序,直到用戶單擊一個按鈕。 我正在進行離散事件模擬,現在的目標是提供說明情況的簡單圖形。 當模擬達到值得顯示的事件時,將調用繪制情況的方法。 我需要一種方法,直到用戶單擊按鈕時才跳回到仿真核心(僅在達到有趣的點時才再次調用)。
您可以創建一個將返回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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.