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>)
执行的结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南