У меня была такая же проблема только сегодня, в основном я не мог вызвать dispose для класса, и объект WMI не удалялся, что выдало мне ту же ошибку.
В итоге я реализовал реализациюдругой интерфейс, а не IDisposable, предоставляя два метода: Init и TearDown, и используйте эти методы для настройки моего MEW и его утилизации.Это немного хакерство, хотя, если пользователь класса не знает об этом, он никогда не вызовет эти два метода, и ваш MEW никогда не запустится или не будет ликвидирован.
Возможно, еще один способ получитькласс подключается к событию типа «OnDestroy» и реагирует соответствующим образом, разрушая объект MEW.
public void Init()
{
if (mew == null)
{
mew = new ManagementEventWatcher(query);
mew.EventArrived += mew_EventArrived;
mew.Start();
}
}
public void TearDown()
{
if (mew != null)
{
mew.Stop();
mew.Dispose();
mew = null;
}
}
РЕДАКТИРОВАТЬ: Да, я понимаю, что это не тот ответ, который вы искали, я не думаю, что тамв любом случае это способ избежать этого, пользователь должен знать, как использовать класс ...: /