最近在檢查我們組內的程式碼,發現好多用到
await Application.Current.Dispatcher.InvokeAsync
相信好多WPF的開發都會用到 該方法做UI執行緒切換。但是細看裡邊的執行,發現了個別存在存在沒有等待完成的情況
執行的結果是 i 為 null 值。
這也就說明了 執行了
await Application.Current.Dispatcher.InvokeAsync
,其實還沒有完成等待完成,AI提示返回的是 DispatcherOperation<Task> 的 返回結果
反編譯導航進去
對於執行 Func<T> callback 回撥的,返回的是DispacherOperation<Func<Task>>
也就是說,要正在執行完成該函式,需要在 await Task<T> ,才能 拿到TResult 的結果
所以,解決的方法如下:
await await Application.Current.Dispatcher.InvokeAsync(Func<Task>)
執行的結果: