c# - 发送消息到原始应用程序域

标签 c# .net .net-2.0 appdomain

我有一个创建新应用程序域的应用程序,如下所示:

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/

相关文章:

c# - 在 Blob 存储中组织 Azure 媒体 Assets

c# - 如何重置自定义性能计数器

c# - Visual Studio 2008 断点可见样式

c# - 如何防止打印屏幕

c# - 插入到 Mysql 表时如何将金额字段舍入到 2 位小数

c# - StringBuilder.ToString() 抛出 OutOfMemoryException

c# - 为什么这些异步 RIA 服务调用在 Web 服务器上串行执行?

c# - 忽略联接实体的全局查询过滤器

c# - 如何将 var 转换为 string[]

c# - 在教新开发人员时,我应该从单元测试开始吗?