私はWPFホストアプリを持っており、アドインは以下に説明するようにUIを返すWPFでもあります:
[リンク] http://msdn.microsoft.com/en-us/library/bb909849%28v=vs.110%29.aspx
WPF アドインを外部プロセスとしてアクティブ化することさえ可能かどうか知りたいです。WPF アドインは AppDomain 分離でのみ使用されると考えられているようですが、これは私たちのアプリには十分ではありません。アドインが何らかの理由でクラッシュした場合、ホストが常にクラッシュすることは許されません。ロードされたアドインがクラッシュした場合でも、ホスト アプリが実行されるようにします。
以下を使用してこれを達成できることを私は知っていSystem.AddIn
ます:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(new AddInProcess(), AddInSecurityLevel.fulltrust);
しかしSystem.AddIn
、アドインに WPF UI コンポーネントがあるからではなく、WPF アドインがあります。
次のように、新しいアプリ ドメインで WPFAddIn をアクティブ化できます。
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
WPF アドインでこの状況を処理するための最新情報を入手できませんでした。別のプロセスで WPF AddIn をアクティブにする方法、またはホストで未処理の例外をキャッチする方法の例はありますか。基本的に、アドインがクラッシュしたときにホストが死ぬのを許すことはできません。次のリンクをたどりましたが、スレッドが非常に古く、現在の情報がないことが判明しました。
ホストで例外を処理できれば、それも問題ありません。私の問題を説明しましょう:
私はWPFホスト「A」を持っています。WPFアドイン「B」があります。
ホスト「A」にアドイン「B」をロードしました。アドイン「B」にはクリックボタンがあります。ユーザーがボタンをクリックすると、アドイン「B」でイベントが発生します。そのイベントでは、利用可能な try キャッチはなく、そのイベントからいくつかの null 例外がスローされます。この未処理の例外により、ホスト (WPF アプリも) がクラッシュしました。
ホスト「A」でこの例外を処理し、アドイン「B」をアンロードして、クラッシュすることなくホストを続行できるソリューションを探しています。
AddInSecurityLevel.FullTrust
と同様に アドインを試しましたAddInSecurityLevel.Internet
。
ヒントや例は役に立ちます。