2015-12-10 28 views
0

我在我的項目中使用了一些xpcom組件。此組件不允許在同一個AppDomain中同時使用。如何在單獨的AppDomain中運行靜態方法?

我可以限制我在一個單一的靜態方法該組件的用法:

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

    } 
} 

QueryResultQueryParameter都是不可變的序列化類。

我真的不想在另一個進程中運行它,所以我認爲可以在另一個AppDomain中運行它。

什麼是正確的做法?

回答

0

只有對象可以跨應用程序邊界傳遞。靜態方法實質上是函數指針。有一種在appdomain邊界上引用函數指針的迂迴方式 - 但是,當您調用它時,它將在調用 appdomain的中執行。這不是你想要的。相反,將函數包裝在派生自MarshalByRefObject的(非靜態)類中,然後調用包裝器。

相關問題