0

事实

我正在尝试AddIns使用 MAF(例如Add-ins and Extensibility)制作一个管理(旧版 WinForm exe)进程的主机应用程序

AddIn激活是在进程之外完成的,例如:

addinToken.Activate<PluginHostView>(new AddInProcess(), AddInSecurityLevel.FullTrust);

在跟踪插件并将它们显示在TooStripMenu. ToolStripMenuitem.Click宿主应用程序中的事件触发作为合同PlugIn.ShowMainDialog()一部分的 - 方法:AddIn

(sender as PluginToolStripMenuItem).PlugIn.ShowMainDialog();

X 项目(一个 WinForm 应用程序)在一个包含以下AddIn内容的类中实现合同:

public override void ShowMainDialog()
    {
        new Form1().Show();
    }

运行上述主机应用程序会使AddIn X Form进程挂起,很难找出问题所在:-(

问题

是否有任何 WORKING 样本可new AddInProcess()用于托管AddIns包含WinForms在那里的内容?

4

1 回答 1

0

在 MAF 中显示进程外的无模式表单并不是很简单。我发现最简单的方法是生成一个新线程并ShowDialog在该线程上执行:

Thread t = new Thread(()=>
{
    var f = new Form1();
    f.ShowDialog();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
于 2014-08-08T15:22:47.677 回答