我需要停止執行程序,直到用戶單擊按鈕。我正在做一個離散事件模擬,目前的目標是提供說明情況的簡單圖形。當模擬達到一個值得展示的事件時,就會調用描繪情況的方法。我需要的方法是,不要跳回到模擬核心,直到用戶單擊按鈕(僅當到達有趣的點時再次調用)。C#停止執行,直到發生事件
0
A
回答
3
您可以創建一個方法,返回一個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();
相關問題
- 1. 事件發生,但腳本不執行,直到事件發生兩次
- 2. 在其他事件發生時停止執行
- 3. c# - 執行沒有發生的事件
- 4. 停止setInterval直到操作未執行?
- 5. asp.net mvc執行動作直到發生事件
- 6. 暫停SwingWorker執行,直到組件停止調整大小
- 7. 如何停止執行自定義活動,直到SharePoint站點(列表)上發生ListItemChanged事件
- 8. 如何停止發生定時事件?
- 9. 雙擊事件preventDefault()不停止執行?
- 10. 的Java Swing顯示停止更新,直到X事件產生
- 11. C#:停止循環,直到一個事件
- 12. 停止執行C#代碼
- 13. 暫停一個JS腳本,直到發生事件
- 14. 如何暫停,直到事件發生在activeMQ
- 15. 在MenuItem中停止回發點擊,但事件應該執行
- 16. 暫停執行,直到保存文件
- 17. 防止執行回調,直到輸入停止
- 18. 在方法中暫停執行,直到引發ListView中的SelectionChanged事件
- 19. 如何在最終事件發生時停止循環事件?
- 20. Mootools:如何在其他事件發生時停止事件
- 21. 發生一個事件時停止其他事件
- 22. onkeyup事件停止onchange ajax事件發生
- 23. 如何在新事件發生時停止舊事件
- 24. 使用REPEAT塊直到事件發生?
- 25. 阻止執行,直到條件
- 26. 阻止下一次keydown事件,直到腳本執行完成
- 27. jQuery的中止執行,直到事件被分派
- 28. 如果touchmove發生,停止任何觸發事件觸發
- 29. 發生事件後的執行順序
- 30. c recv()讀直到換行發生
這不是一個問題。請顯示您嘗試過的方式以及您遇到問題的位置。我們不在這裏爲你編寫你的程序。 – BradleyDotNET 2014-08-27 17:17:43
我不知道我明白。 '如何在事件發生之前停止執行?'的哪一部分?是不是一個問題?我可以想到的解決方案就像while(buttonnotclicked){}這浪費了CPU時間無所事事。 – Klobbbyyy 2014-08-27 17:26:32
也許它只是沒有說清楚,但在我第一次閱讀時,我看到一大段文字描述你想要做什麼。你也開始說「停止執行程序」,這不是你對程序的做法。你可能會阻塞一個線程,但是停止執行意味着即使點擊按鈕也不會被響應。總的來說,這個問題沒有一個明確的問題,整個事情很難閱讀,混淆,缺乏努力和基本的理解。塞維給你一個很好的答案,但它仍然是一個不好的問題。 – BradleyDotNET 2014-08-27 17:41:28