如何在单独的AppDomain中运行静态方法?

时间:2015-12-10 17:26:26

标签: c# .net appdomain

我在项目中使用了一些xpcom组件。此组件不允许在同一Appdomain中同时使用。

我可以在一个静态方法中限制我对此组件的使用:

public static class MyClass
{
    // This should run in another appdomain
    public static QueryResult Run(QueryParameter arg) 
    {

    }
}

QueryResultQueryParameter都是不可变的可序列化类。

我真的不想在另一个进程中运行它,所以我认为可以在另一个Appdomain中运行它。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

只能在appdomain边界之间传递对象。静态方法本质上是函数指针。有一种在appdomain边界引用函数指针的迂回方式 - 但是,当你调用它时,它将在调用 appdomain中执行。那不是你想要的。相反,将函数包装在派生自MarshalByRefObject的(非静态)类中,然后调用包装器。