我在 WPF 中使用MAF,但 UI 线程有问题。我希望我激活的每个插件都成为一个独特的 UI 线程。
为什么我想要你可能想知道?我试着解释:-)
我有一个主机应用程序,它是插件的容器。不同的人为主机开发插件。如果开发人员在他们的插件中启动了一个长过程并且他们忘记了在线程中调用或启动该过程,那么主机将冻结,因为主机和插件共享相同的 UI 线程。
每个插件都在单独的应用程序域中运行。关于每一个暗示我都会很高兴。
您可以尝试以下方法:
Thread thread = new Thread(() =>
{
Window1 w = new Window1();
w.Show();
//make sure to stop the Dispatcher when window is closed
w.Closed += (s, e) => w.Dispatcher.InvokeShutdown();
//start the message pump
System.Windows.Threading.Dispatcher.Run();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();