Я подписываюсь на событие WMI и получаю ошибку " COM, которая была отделена от лежащего в ее основе RCW, не может использоваться ", когда мое приложение закрывается.Этот вопрос задавался до , но он сильно отличается от моих обстоятельств.
Я звоню по этому коду из основного потока:
string strComputer = @".";
ManagementScope scope = new ManagementScope(@"\\" + strComputer + @"\root\wmi");
scope.Connect();
EventQuery query = new EventQuery("Select * from MSNdis_StatusMediaDisconnect");
ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query);
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived); // some function that does stuff when the event occurs.
watcher.Start();
Событиесообщили правильно.Я подозреваю, что проблема связана с тем, как эти объекты освобождаются, когда мое приложение закрывается.Как я могу предотвратить ошибку?Должен ли я явным образом распоряжаться наблюдателем, областью действия и запросом до закрытия моего приложения?