我编写了一个扩展 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);
}