Итак, вот история, у меня есть этот рабочий элемент, который использует AppDomain для выполнения некоторых задач. Домен требует больших затрат на установку и демонтаж. Итак, я создаю кеш для каждого потока объектов WeakReference для рабочего типа:
class Worker
{
[ThreadStatic]
static Dictionary<string, WeakReference> _workers;
public static Worker Fetch( ... ) { you get the idea }
private AppDomain _domain;
public Worker(...)
{
_domain = AppDomain.Create( ... );
}
~Worker()
{
AppDomain.Unload(_domain);
}
// bla bla bla
}
Проблема, с которой я столкнулся, заключается в том, что при вызове AppDomain.Unload всегда генерируется исключение:
System.CannotUnloadAppDomainException: Error while unloading appdomain. (Exception from HRESULT: 0x80131015)"
Итак Я думаю, что это странно, Я знаю, что у меня ничего не работает в этом домене ... В чем дело? Немного покопавшись, методом проб и ошибок я придумал следующее:
~Worker()
{
new Action<AppDomain>(AppDomain.Unload)
.BeginInvoke(_domain, null, null);
}
Итак, мои вопросы: