[英]Get back to ui thread in async callback method
我正在將越來越多的代碼遷移到異步/等待狀態,並且大多數情況下運行順利。
但是有時我會遇到以下情況,並且不確定使用異步/等待模式是多么“簡單”:
private async void My_EventHandler(object sender, Event ev)
{
// This event is raised by a background worker thread
// Somehow we need to go back to ui thread here
NotifyPropertyChange(Busy); // Or any other method that should run on ui thread
await processEventAsync(ev);
NotifyPropertyChange(Busy);
}
目前,在這些情況下,我正在使用異步lambda進行顯式的Dispatcher / Invoke,但考慮到使用async / await進行的其他所有處理,它似乎很臟。
所以我想問題是,C#中是否有類似的東西?
await SwitchToUIThread();
您可以使用https://www.thomaslevesque.com/2015/11/11/explicitly-switch-to-the-ui-thread-in-an-async-method/中介紹的技術
在您的代碼中包括SynchronizationContextAwaiter。
您的代碼中的某個地方在syncContext變量中捕獲了GUI上下文,該變量應該對事件處理程序可用。
在事件處理程序中,執行
await syncContext;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.