C# 卸载AppDomain会使程序崩溃
我创建了一个新的AppDomain=>NewAppDomain 当我尝试卸载C# 卸载AppDomain会使程序崩溃,c#,appdomain,C#,Appdomain,我创建了一个新的AppDomain=>NewAppDomain 当我尝试卸载NewAppDomain时,出现异常: “LocalDataStoreSlot存储已释放。”我的程序正在崩溃。 为什么会发生异常 一些代码: public class ActivatedAddIn : DisposableClass { public AppDomain AppDomain { get; internal set; } internal IBaseAddInApp Proxy { get
NewAppDomain
时,出现异常:
“LocalDataStoreSlot存储已释放。”我的程序正在崩溃。
为什么会发生异常
一些代码:
public class ActivatedAddIn : DisposableClass
{
public AppDomain AppDomain { get; internal set; }
internal IBaseAddInApp Proxy { get; set; }
public void Shutdown()
{
Dispose();
}
public void Dispose()
{
//Here the crash :(((
AppDomain.Unload(AppDomain);
AppDomain = null;
Proxy = null;
GC.WaitForPendingFinalizers();
GC.Collect();
}
}
外接程序的窗口关闭事件:
ActivatedAddIn runnedAddIn = RunnedAddIns.FirstOrDefault(item => item.ActivatedAddIn.Proxy.RunnedId == runnedAddInId);
if(runnedAddIn == null) return;
RunnedAddIns.Remove(runnedAddIn);
runnedAddIn.ShutdownAddIn();
你需要提供一些代码才能得到合理的答案。你有代码给我们吗?一般来说,看看这篇关于msdn的简单文章:我真的不明白卸载域时会发生什么以及为什么调用AppDomain.SetData(这里发生异常)方法…我意识到,当我创建用户控件(窗口等)时,卸载AppDomain时会发生异常,如果新AppDomain不包含任何用户控件,AppDomain将完全卸载(我测试了加载/卸载10/15次,没有引发异常)。如何解决这个问题?