我想调用在新 AppDomain 中运行的 API(asp.net MVC 框架中的 FWIW)。我发现了一些在 AppDomain 中执行代码的选项。到目前为止,我对所看到的解决方案的冗长不满意:
我发现:
组装执行:
appDomain.ExecuteAssembly("SOMEPATH.exe");
触发可执行文件并不是进行 API 调用的好方法。我想需要传递各种参数来Main()
代表 API 中的每个公共方法。
反射:
ObjectHandle handle = appDomain.CreateInstance("someassembly.dll", "someType");
A a = (A) handle.Unwrap();
a.SomeField = "foo";
这让我觉得 API 是一个优秀的解决方案。但是,由于复杂的设置和潜在的性能开销,我不是 Reflection 的忠实粉丝。
有没有办法在新线程中加载应用程序域,这样我就可以在不经过这些箍的情况下触发方法?换句话说,一些有效的手段:
Thread.Start("useThisAppdomain",
//do work.
className.M();//run in new appdomain
);
或之类的?