我使用默认的appdomain(AD),用于在隔离运行插件时创建新的appdomains(AD1)。 在创建新域时,我还连接了AppDomainUnload事件,以允许我调用清理代码等。
我似乎遇到的问题是:
1)从AD
创建AD12)在AD1中运行代码
3)调用AD.Unload(AD1)
代码切换到AD1并调用卸载事件,并传入对当前AppDomain(AD1)的引用。
此时我想获得对AD1中运行的当前实例的引用以调用shutdown方法,但是AppDomain类上没有GetInstance。
我有什么想法可以得到它吗?
答案 0 :(得分:1)
您在寻找AppDomain.CurrentDomain吗?
答案 1 :(得分:1)
在AD1中创建实例时,可以将实例存储在AppDoman中的静态变量中,将静态范围限定为AppDomain。或者,如果这不是单件类型对象,则可以维护List<> AppDomain中的对象。
您可以将此“注册”放在插件实例的构造函数中。处理卸载时,您可以使用静态或枚举列表,并对对象执行所需的清理。