每个 MAF 插件的 UI 线程

Posted

技术标签:

【中文标题】每个 MAF 插件的 UI 线程【英文标题】:UI thread for each MAF AddIn 【发布时间】:2011-06-28 08:43:17 【问题描述】:

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

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

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

每个插件都在单独的应用程序域中运行。关于每一个提示我都会很高兴。

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于每个 MAF 插件的 UI 线程的主要内容,如果未能解决你的问题,请参考以下文章