如何托管和激活流程耗尽的WinForm-AddIns(新的AddInProcess())?

时间:2014-06-18 14:38:42

标签: c# maf

事实

我尝试使用MAF制作一个托管AddIns(传统WinForm exe' s)的主机应用程序(例如Add-ins and Extensibility

AddIn激活是在以下过程中完成的:

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

在主机应用程序中跟踪插件并在TooStripMenu中显示它们。 主机应用程序中的ToolStripMenuitem.Click事件会触发PlugIn.ShowMainDialog() - AddIn合同中的(sender as PluginToolStripMenuItem).PlugIn.ShowMainDialog(); 方法:

AddIn

public override void ShowMainDialog() { new Form1().Show(); } X项目(WinForm应用程序)在包含以下内容的类中实现合同:

AddIn

运行上述主机应用程序会导致X Form new AddInProcess()和进程挂起,很难找出错误: - (

问题

是否有任何使用AddIns来托管WinForms {{1}}的工作样本?

1 个答案:

答案 0 :(得分:0)

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

Thread t = new Thread(()=>
{
    var f = new Form1();
    f.ShowDialog();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();