调用线程必须为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(); }));

完美解决

原文地址:https://www.cnblogs.com/chonglu/p/13402838.html