Зачем создавать TraceSource как статический?

Для всех примеров, которые я видел людей, создающих TraceSource для класса, он всегда определяется как статический

private static TraceSource traceSource = new TraceSource("TraceSourceApp");

Почему это закончилось?

private readonly TraceSource _traceSource = new TraceSource("TraceSourceApp");

Каковы преимущества / недостатки?

1 ответ

Решение

Они всегда должны быть статичными.

  • Если вы проверяете исходный код MS, TraceSource помещается в статическую коллекцию. (Полагаю, исходный код Novel (Mono) такой же.
  • Источник трассировки с тем же именем ведет себя одинаково во всей сборке, поэтому нет необходимости в отдельных.
  • TraceSource создает ненужный мусор из-за его использования объектов WeakReference (или из-за статической области видимости... у статических вещей есть забавные правила сбора мусора): http://blog.perfectlytogether.com/2009/12/29/howto-solve-a-memory-leak-issue-caused-by-weakreference-objects/, вызванный-на-WeakReference-объекты /
Другие вопросы по тегам