0

事実

AddInsMAF を使用して (レガシー WinForm exe の) アウト プロセスを管理するホスト アプリケーションを作成しようとしています (例: Add-ins and Extensibility )

アクティベーションは、次の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と、プロセスがハングし、何が問題なのかを突き止めるのが非常に難しくなります :-(

質問

そこに含まれているnew AddInProcess()ホストに使用する実用的なサンプルはありますか?AddInsWinForms

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 に答える