WPF 的 await Application.Current.Dispatcher.InvokeAsync,Func 如果是Task , 等待赋值可能存在没有等待执行完成的问题

最近在检查我们组内的代码,发现好多用到

await Application.Current.Dispatcher.InvokeAsync 

相信好多WPF的开发都会用到 该方法做UI线程切换。但是细看里边的执行,发现了个别存在存在没有等待完成的情况

 

 执行的结果是 i 为 null 值。

这也就说明了 执行了

1
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>)

 

 执行的结果:

 

posted @   wuty007  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示