在我的方案中,我想要在單獨的AppDomain中執行一個方法。 我可以採取多少種不同的方式來實現這個目標?如何在單獨的AppDomain中運行方法?
特別是,我有以下問題:
- 我可以將一個集加載到應用程序域A和應用程序域乙執行其方法?
- 看來我實現這個AppDomain.DoCallBack Method和CrossAppDomainDelegate。我只是無法弄清楚如何在不同的AppDomain中安裝程序集和方法。爲了執行該方法,是否同樣被再次加載到另一個AppDomain中?
在我的方案中,我想要在單獨的AppDomain中執行一個方法。 我可以採取多少種不同的方式來實現這個目標?如何在單獨的AppDomain中運行方法?
特別是,我有以下問題:
爲了在單獨的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()這種類型的情況。
至於你有多少種方式來做這件事的問題...嗯,很多,但它取決於確切的情況和你手頭有什麼物品。
添加到Rob的正確答案中,我想提到的是,任何嘗試調用而不使用反射都會導致程序集加載到您的調用AppDomain中,這可能是您試圖避免的。