每个MAF AddIn的UI线程

时间:2011-06-28 08:43:17

标签: c# wpf multithreading appdomain maf

我在WPF中使用MAF,我遇到了UI线程的问题。我希望我激活的每个AddIn都成为一个独特的UI线程。

为什么我想要你可能想知道?我试着解释一下: - )

我有一个主机应用程序,它是addins的容器。不同的人为主机开发插件。如果开发人员在其插件中启动了一个长过程,并且他们忘记在一个线程中调用或启动该过程,则主机将冻结,因为主机和插件共享相同的UI线程。

每个插件都在一个单独的appdomain中运行。关于每一个提示,我都会很高兴。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

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();