我有一个创建新应用程序域的应用程序,如下所示:
private static AppDomain domain = null;
private static void LoadAndLaunchAppDomain(string assemblyFile, string typeName)
{
AppDomainSetup setup = new AppDomainSetup()
{
ApplicationBase = AppDomain.CurrentDomain.BaseDirectory,
ShadowCopyFiles = "true"
};
domain = AppDomain.CreateDomain("ClientKernel", null, setup);
domain.UnhandledException += new UnhandledExceptionEventHandler(domain_UnhandledException);
ClientKernelLauncher launcher = (ClientKernelLauncher)domain.CreateInstanceFromAndUnwrap(assemblyFile, typeName);
launcher.Launch();
}
static void domain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
// handler
}
在某些时候会抛出异常并且流程到达 HANDLER 内部。我真正想要的是在发生这种情况时重新创建域。我注意到处理程序实际上是在“ClientKernel”应用程序域上运行,而不是在创建它的原始域上运行。
如何与原始域通信并告诉它再次调用 LoadAndLaunchAppDomain()
方法?
最佳答案
使用AppDomain.DoCallBack()
调用另一个 AppDomain 上的方法。
我不确定一旦调用 AppDomain
时抛出未处理的异常,这是否会起作用。但是,你可以尝试一下。
关于c# - 发送消息到原始应用程序域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518027/