WPF 的 await Application.Current.Dispatcher.InvokeAsync,Func 如果是Task , 等待赋值可能存在没有等待执行完成的问题
最近在检查我们组内的代码,发现好多用到
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>)
执行的结果: