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());
    }
}

最后一行的执行时间instance.CreateContract接近1.7 秒!哪里有问题?

4

1 回答 1

3

您是否尝试过将LoaderOptimizationAttribute设置为 来装饰 Main 方法LoaderOptimization.MultiDomainHost

该类FrameworkElementAdapters是 System.AddIn 的一部分。看看插件性能:当你跨越隔离边界时你能期待什么,以及如何使它更好地形成 System.AddIn 团队的博客。另请查看WPF 加载项概述MSDN 文章的“性能优化”部分。

于 2013-04-23T13:58:51.950 回答