1

FrameworkElementAdaptersクロスドメイン呼び出しがクラスで非常に遅い理由を理解できません。簡単なコードは次のとおりです。

class Program
{
    [STAThread]
    static void Main()
    {
        AppDomain domain = AppDomain.CreateDomain("AnotherDomain");

        var instance = (AnotherDomainClass) domain.CreateInstanceAndUnwrap(
            typeof (AnotherDomainClass).Assembly.FullName,
            typeof (AnotherDomainClass).FullName);

        var contract = instance.CreateContract();
    }
}

class AnotherDomainClass : MarshalByRefObject
{
    public INativeHandleContract CreateContract()
    {
        return FrameworkElementAdapters.ViewToContractAdapter(
            new TextBlock());
    }
}

最後の行の実行時間は1.7 秒instance.CreateContract近くです。どこに問題がありますか?

4

1 に答える 1

3

LoaderOptimizationAttributeを に設定して Main メソッドをデコレートしようとしましたLoaderOptimization.MultiDomainHostか?

FrameworkElementAdaptersクラスは System.AddIn の一部です。Add-In Performance をご覧ください: System.AddIn チームのブログで、分離の境界を越えたときに期待できることと、それを改善する方法について説明しています。WPF アドインの概要MSDN 記事の「パフォーマンスの最適化」セクションも参照してください。

于 2013-04-23T13:58:51.950 に答える