gpt4 book ai didi

c# - 如何通过 UnhandledException 卸载 AppDomain

转载 作者:行者123 更新时间:2023-11-30 16:27:11 24 4
gpt4 key购买 nike

主 AppDomain 有一些子 AppDomain。在子 AppDomain 中可能是 UnhandledException。如何通过子 AppDomain 中的 UnhandledException 卸载子 AppDomain。

最佳答案

这可以通过 try ... finally ... 完成,无需注册 UnhandledException 事件处理程序:

using System;
using System.Reflection;

interface IFoo
{
void DoGood();
void DoBad();
}

class Foo : MarshalByRefObject, IFoo
{
public void DoGood() { Console.WriteLine("I'm good (" + AppDomain.CurrentDomain.FriendlyName + ")"); }
public void DoBad() { throw new Exception("I'm bad (" + AppDomain.CurrentDomain.FriendlyName + ")"); }
}

class Program
{
public static void Main()
{
try
{
AppDomain domain = AppDomain.CreateDomain("FooDomain");
try
{
string assemblyName = Assembly.GetExecutingAssembly().FullName; // may be different assembly
string typeName = "Foo";
IFoo foo = (IFoo)domain.CreateInstanceAndUnwrap(assemblyName, typeName);
foo.DoGood();
foo.DoBad();
}
finally
{
AppDomain.Unload(domain);
}
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
}
}

输出是:

I'm good (FooDomain)
Error: I'm bad (FooDomain)

关于c# - 如何通过 UnhandledException 卸载 AppDomain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8135823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com