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

smw*_*dia 6 .net c#

在我的场景中,我想在单独的AppDomain中执行一个方法.我可以采取多少种不同的方法来实现这一目标?

特别是,我有以下问题:

  • 我可以将程序集加载到AppDomain A并在AppDomain B中执行其方法吗?
  • 我似乎用AppDomain.DoCallBack方法和CrossAppDomainDelegate实现了这一点.我无法弄清楚如何在不同的AppDomain中使用程序集和方法是有意义的.为了执行该方法,是否同样可以再次加载到其他AppDomain中?

Rob*_*oke 7

为了在单独的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().

至于你关于有多少种方法可以做到这一点的问题...嗯,很多,但这在很大程度上取决于具体情况以及你掌握的对象.