Я пытаюсь создать оснастку MMC, которая, помимо прочего, будет получать и отображать события журнала, которые запускаются из моей службы. Я создал наблюдатель, и он срабатывает правильно, но когда я пытаюсь добавить узлы в мой MmcListView, я получаю исключение COMException, которое говорит: «COM-объект, который был отделен от базового RCW, не может быть использован».
Вот код вопроса:
private void LogEvent_EventArrived(object sender, EventArrivedEventArgs e)
{
LogEvent logEvent = new LogEvent(e.NewEvent);
if (SnapIn.InvokeRequired)
{
object[] args = new object[] { logEvent };
SnapIn.Invoke(new ManagementAction(AddEvent), args);
}
else
AddEvent(logEvent);
}
Класс LogEvent - это простой класс, который выполняет преобразование свойств ManagmentBaseObject в тип безопасных свойств, которые легко кодируются. Метод AddEvent выполняет фактическую работу по добавлению объекта LogEvent в список ResultNodes MmcListView.
Исключение, которое я упомянул, на самом деле вызывается при возникновении ВТОРОГО события и, похоже, происходит при вызове InvokeRequired. Я понятия не имею, что на самом деле здесь происходит. Есть идеи?