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

本文关键字:运行 静态方法 AppDomain 单独 | 更新日期: 2023-09-27 18:26:19

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

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

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

CCD_ 1和CCD_ 2都是不可变的可序列化类。

我真的更喜欢不在另一个进程中运行它,所以我认为可以在其他应用程序域中运行它。

正确的方法是什么?

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

只有对象可以跨应用程序域边界传递。静态方法本质上是函数指针。有一些绕过appdomain边界引用函数指针的方法——然而,当您调用它时,它将在调用appdomain中执行。这不是你想要的。相反,将函数包装在从MarshalByRefObject派生的(非静态)类中,然后调用包装器。