0

別のプロジェクトにインポート (参照) されている C# ライブラリで ManagementEventWatcher を使用しています。私が抱えている問題は、私の場合、アプリケーションを閉じる前に ManagementEventWatcher を「停止」して「破棄」する必要があることです。ライブラリを変更することのみが許可されており、ライブラリを実装するアプリケーションは変更できません。

私は次のことを試しました:

public class MyClass:IDisposable ...

その後

 public void Dispose()
        {
            _wmiWatcherRemoved.Stop();
            _wmiWatcherRemoved.Dispose();
        }

ただし、Dispose は実行されません。したがって、アプリケーションは次の例外を受け取ります。

COM object that has been separated from its underlying RCW can not be used

何か案は?ご尽力いただきありがとうございます。

4

1 に答える 1

0

あなたの質問の文言から、あなたのライブラリを使用しているアプリケーションは、閉鎖中にあなたが説明した例外に遭遇したと思いますか?

この場合、AppDomain ProcessExit イベントのハンドラーを登録してみることをお勧めしStop()ますDispose()。これにより、ウォッチャー インスタンスで呼び出されます。

于 2012-09-05T11:52:24.957 に答える