簡體   English   中英

C#停止執行直到事件引發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM