TextWriterTraceListener в фоновом потоке

У меня есть сторонний компонент, который использует функциональность TraceSwitch, чтобы позволить мне вывести некоторые следы того, что происходит внутри. К сожалению, запуск переключателей в подробном режиме с TextWriterTraceListener в качестве потребителя (вывод в файл) слишком сильно замедляет работу приложения.

Немедленная запись отслеживаемых данных не критична, поэтому есть ли способ записать данные в поток с более низким приоритетом? Может Задание?

РЕДАКТИРОВАТЬ

При дальнейшем расследовании кажется, что простое включение переключателей без подключения прослушивателя вызывает замедление. Я собираюсь связаться с поставщиком компонентов.

Хотя все равно было бы интересно услышать ответ.


person Carlos    schedule 16.11.2010    source источник


Ответы (1)


Напишите собственное расширение для TraceListener. В расширении поместите все строки трассировки в List‹string> и, когда количество станет достаточно большим, запишите список в файл и очистите список, чтобы начать заново. Сбросить список в Dispose().

Затем это можно легко расширить, чтобы использовать пул потоков для постановки в очередь новой задачи, выполняющей фактическую запись.

Это не гарантирует, что вы улучшите производительность. Это поможет только в том случае, если вы уверены, что это IO замедляет работу.

person Les    schedule 16.11.2010