0

我有一个第 3 方组件,它使用 TraceSwitch 功能允许我输出内部发生的一些跟踪。不幸的是,在详细模式下运行开关,使用 TextWriterTraceListener 作为消费者(输出到文件)会大大降低应用程序的速度。

跟踪数据是否立即写入并不重要,那么有没有办法将数据写入较低优先级的线程?也许是一个任务?

编辑

经过进一步调查,似乎只是在不连接侦听器的情况下打开开关会导致减速。我将获得组件提供者的控制。

不过,听到答案仍然很有趣。

4

1 回答 1

1

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

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

这并不能保证您会提高性能。只有当您确定是 IO 减慢了速度时,它才会有所帮助。

于 2010-11-16T19:03:24.590 回答