2010-11-16 74 views
0

我有一个第三方组件,它使用TraceSwitch功能来让我输出一些内部发生的事情。不幸的是,以详细模式运行交换机,使用TextWriterTraceListener作为使用者(输出到文件)会太慢地减慢应用程序。TextWriterTraceListener在后台线程上

跟踪数据立即写入并不关键,那么有没有办法让数据写在较低优先级的线程上?也许是一项任务?

EDIT

经进一步调查,似乎仅仅接通开关不附加听者使减速。我将要获取组件提供者。

虽然听到答案仍然很有趣。

回答

1

将您自己的扩展写入TraceListener。在扩展中,将所有跟踪字符串放到一个List < string>中,当计数足够高时,将列表写入文件并清除列表以重新开始。刷新Dispose()上的列表。

这可以很容易地扩展到使用线程池来排队一个新的任务做实际的写。

这并不能保证你会提高性能。如果你确定这是IO减慢速度,它只会有所帮助。