我在项目中使用了一些xpcom组件。此组件不允许在同一Appdomain中同时使用。
我可以在一个静态方法中限制我对此组件的使用:
public static class MyClass
{
// This should run in another appdomain
public static QueryResult Run(QueryParameter arg)
{
}
}
QueryResult
和QueryParameter
都是不可变的可序列化类。
我真的不想在另一个进程中运行它,所以我认为可以在另一个Appdomain中运行它。
这样做的正确方法是什么?
答案 0 :(得分:0)
只能在appdomain边界之间传递对象。静态方法本质上是函数指针。有一种在appdomain边界引用函数指针的迂回方式 - 但是,当你调用它时,它将在调用 appdomain中执行。那不是你想要的。相反,将函数包装在派生自MarshalByRefObject的(非静态)类中,然后调用包装器。