2010-11-16 131 views
0

我有一個第三方組件,它使用TraceSwitch功能來讓我輸出一些內部發生的事情。不幸的是,以詳細模式運行交換機,使用TextWriterTraceListener作爲使用者(輸出到文件)會太慢地減慢應用程序。TextWriterTraceListener在後臺線程上

跟蹤數據立即寫入並不關鍵,那麼有沒有辦法讓數據寫在較低優先級的線程上?也許是一項任務?

EDIT

經進一步調查,似乎僅僅接通開關不附加聽者使減速。我將要獲取組件提供者。

雖然聽到答案仍然很有趣。

回答

1

將您自己的擴展寫入TraceListener。在擴展中,將所有跟蹤字符串放到一個List < string>中,當計數足夠高時,將列表寫入文件並清除列表以重新開始。刷新Dispose()上的列表。

這可以很容易地擴展到使用線程池來排隊一個新的任務做實際的寫。

這並不能保證你會提高性能。如果你確定這是IO減慢速度,它只會有所幫助。