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

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

调用线程必须为STA,因为许多UI组件都需要_第1张图片

解决办法

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

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

完美解决
调用线程必须为STA,因为许多UI组件都需要_第2张图片

你可能感兴趣的:(调用线程必须为STA,因为许多UI组件都需要)