在C#Metro樣式應用程序中
ASYNC事件處理:乾淨的解決方案
>
異步編程對於響應式C#/XAML Metro樣式應用程序至關重要,可以防止在冗長操作過程中UI凍結。 但是,在需要中間過程中需要用戶互動的情況下出現情況。本文詳細介紹瞭如何在異步方法中有效等待事件,暫停執行直到事件觸發。。 挑戰:等待異步操作期間的用戶輸入
GetResults
想像一個方案:一個按鈕啟動異步GetResults
方法。 此方法可能需要用戶輸入(例如,在繼續執行之前單擊“繼續”按鈕)。 關鍵問題:我們如何暫停
> 效率低下的輪詢:避免
的一種方法
GetResults
>一種簡單的方法(但有缺陷)的方法涉及“繼續”按鈕的事件處理程序更新的標誌,並在Task.Delay
>內反複檢查。這種不斷的民意調查會浪費資源,並且效率低下。
優雅的基於事件的解決方案
C#提供了卓越的事件驅動的解決方案:
1。 利用SemaphoreSlim
SemaphoreSlim
對象實例化為信號。 GetResults
>
SemaphoreSlim.WaitAsync
TaskCompletionSource
TaskCompletionSource<bool>
GetResults
tcs.Task
這些事件驅動的方法提供了一種將用戶互動整合到異步操作中的干淨有效的方法,從而確保在復雜方案中流暢的用戶體驗。以上是如何在異步C#Metro App方法中等待事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!