Я написал собственный слушатель трассировки, расширяющий TextWriterTraceListener.
Теперь, как мне вызвать Dispose () на слушателе? Я добавляю его через app.config моего проекта.
Попытка добавить вызов Dispose (false) в финализатор, но он не вызывается. Как ни странно, он вызывается в VS 2010, но не когда я запускаю приложение, но я знаю, что сбор GC не гарантирован. (в основном это используется в тестах nunit для регистрации вызовов System.Net.Socket из тестов, и мне нужно выполнить некоторую постобработку после запуска всех тестов и записать это также в журнал. Я добавил эту часть в Dispose ( ))
Фрагмент App.config:
<sources>
<source name="System.Net.Sockets" tracemode="protocolonly" maxdatasize="10240">
<listeners>
<add name="CustomTraceListener" type="Tests.Custom.MyTest.CustomTraceListener, Tests.Custom.MyTest" initializeData="custom.log" />
</listeners>
</source>
</sources>
Некоторые фрагменты кода:
~CustomTraceListener()
{
Dispose(false);
}
protected override void Dispose (bool disposing)
{
base.Write(customProcessor.PostProcess());
base.Flush();
base.Dispose(disposing);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}