我有一个第三方组件,它使用TraceSwitch功能允许我输出一些内部发生的痕迹。不幸的是,以详细模式运行交换机,使用TextWriterTraceListener作为使用者(输出到文件)会使应用程序运行速度过慢。
跟踪数据立即写入并不重要,那么有没有办法将数据写入优先级较低的线程?也许是一个任务?
修改
经过进一步调查,似乎只是在没有连接监听器的情况下打开开关导致减速。我将抓住组件提供商。
虽然听到答案仍然会很有趣。
答案 0 :(得分:1)
将自己的扩展名写入TraceListener。在扩展中,将所有跟踪字符串放入List< string>当计数变得足够高时,将列表写入文件并清除列表以重新开始。刷新Dispose()上的列表。
然后可以很容易地将其扩展为使用线程池对新任务进行队列执行实际写入。
这并不能保证您将提高性能。只有当你确定IO正在减慢速度时才会有所帮助。