private static void OnDomainUnload(object sender, EventArgs e)
{
lock (s_AppDomains.SyncRoot)
{
if (!s_CleanedUp)
{
s_CleanedUp = true;
foreach (AppDomain domain in s_AppDomains.Values)
{
try
{
AppDomain.Unload(domain);
}
catch { }
}
s_AppDomains.Clear();
AppDomain excessAppDomain = s_ExcessAppDomain;
if (excessAppDomain != null)
{
try
{
AppDomain.Unload(excessAppDomain);
}
catch { }
s_ExcessAppDomain = null;
}
}
}
}