サービスから発生したログ イベントを受信して表示する MMC スナップインを作成しようとしています。ウォッチャーを作成し、正しく起動しますが、ノードを MmcListView に追加しようとすると、「基になる RCW から分離された COM オブジェクトは使用できません」という COMException が発生します。
問題のコードは次のとおりです。
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 オブジェクトを MmcListView の ResultNodes リストに追加する実際の作業を行います。
私が言及した例外は、実際には発生する SECOND イベントで呼び出され、InvokeRequired への呼び出しで発生するようです。ここで実際に何が起こっているのかわかりません。何か案は?