2010-08-01 27 views
5

在我的方案中,我想要在單獨的AppDomain中執行一個方法。 我可以採取多少種不同的方式來實現這個目標?如何在單獨的AppDomain中運行方法?

特別是,我有以下問題:

  • 我可以將一個集加載到應用程序域A和應用程序域乙執行其方法?
  • 看來我實現這個AppDomain.DoCallBack MethodCrossAppDomainDelegate。我只是無法弄清楚如何在不同的AppDomain中安裝程序集和方法。爲了執行該方法,是否同樣被再次加載到另一個AppDomain中?

回答

5

爲了在單獨的AppDomain中執行代碼,必須將包含該代碼的程序集加載到該AppDomain中。從那裏,您可以使用反射或AppDomain類中的「CreateInstance」方法從您的託管域調用第二個AppDomain中的方法。

請記住,AppDomains是一個硬性的邊界。爲了跨AppDomain邊界進行通信,您需要使用遠程處理或真正的IPC-ish機制。

這有點過時,但我相信它仍然適用。 http://blogs.msdn.com/b/suzcook/archive/2003/06/12/57169.aspx

Suzanne Cook有一系列與此主題相關的帖子,所以可能值得瀏覽她的檔案。

查看AppDomain類上的「CreateInstance」方法系列。在過去,我已經使用了CreateInstanceFromAndUnwrap()這種類型的情況。

至於你有多少種方式來做這件事的問題...嗯,很多,但它取決於確切的情況和你手頭有什麼物品。

1

添加到Rob的正確答案中,我想提到的是,任何嘗試調用而不使用反射都會導致程序集加載到您的調用AppDomain中,這可能是您試圖避免的。

相關問題