调用线程必须为STA,因为许多UI组件都需要


当我在使用Cefsharp后,在前端使用JS调用.NET公开类时,遇到了这个问题:调用线程必须为STA,因为许多UI组件都需要, 困恼了小编半天。终于自己敢去尝试,解决了。

解决办法

在要执行代码的外层加入Dispatcher,Dispatcher的作用是用于管理线程工作项队列,类似于Win32中的消息队列,Dispatcher的内部函数,仍然调用了传统的创建窗口类,创建窗口,建立消息泵等操作。
可以参考MSDN官方文档中的Dispatcher Class

Application.Current.Dispatcher.Invoke((Action)(() => { new ErrorWindow() { TitleMessage = "傲慢与偏见", Message = msg }.ShowDialog(); }));

完美解决


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM