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

snz8szmq  于 2023-04-22  发布在  .NET
关注(0)|答案(2)|浏览(111)

在我的场景中,我想在一个单独的AppDomain中执行一个方法。我可以采用多少种不同的方法来实现这一点?
特别是,我有以下问题:

  • 是否可以将程序集加载到AppDomain A中并在AppDomain B中执行其方法?
  • 似乎我用AppDomain.DoCallBack MethodCrossAppDomainDelegate实现了这一点。我只是不明白在不同的AppDomain中拥有程序集和方法有什么意义。为了执行方法,是否将相同的程序集再次加载到其他AppDomain中?
qoefvg9y

qoefvg9y1#

为了在单独的AppDomain中执行代码,必须将包含该代码的程序集加载到该AppDomain中。从那里,您可以使用反射或AppDomain类上的“CreateInstance”方法从宿主域调用第二个AppDomain中的方法。
请记住,AppDomain是硬边界。为了跨AppDomain边界进行通信,您将需要使用远程处理或真正的IPC机制。
这有点过时了,但我相信它仍然适用。
Suzanne Cook有一系列与此主题相关的帖子,因此可能值得浏览一下她的档案。
查看AppDomain类上的“CreateInstance”方法家族。过去我在这种情况下使用了很多CreateInstanceFromAndUnwrap()
至于你的问题,有多少种方法可以做到这一点……嗯,很多,但这在很大程度上取决于具体情况和你手中的物品。

jq6vz3qz

jq6vz3qz2#

除了Rob的正确答案之外,我想提一下,任何不使用反射的调用尝试都将导致程序集加载到调用AppDomain中,这可能是您试图避免的。

相关问题