-2

イベント ログにエラーを書き込んでいますが、リークを確認したところ、.net プロファイラーでイベント ログのリークが発生しました。このオブジェクトを破棄する必要がありますか? マルチスレッドで問題が発生しますか?

public override void ProcessWarning(string title, string message)
{
    if (title == null)
        eventLog.WriteEntry(message, EventLogEntryType.Warning);
    else
        eventLog.WriteEntry(title + '\n' + message, EventLogEntryType.Warning);
    }
}
4

1 に答える 1

0

EventLogクラスはComponentを拡張します。これは、それが を実装していることを示していますIDisposable。そうです、(最終的には) Dispose() する必要があります。

どうやらあなたeventLogはあなたのクラスのフィールドです。これ (IDisposable フィールド) は、クラスが IDisposable 自体を実装する必要があることを意味します。独自の Dispose メソッドで、それを破棄する必要がありますeventLog

そしてもちろん、これは、このクラスを使用するものはすべて、現在の IDisposable として扱わなければならないことを意味します。

于 2016-06-21T12:57:59.900 に答える