TraceSource между потоками не работает? - PullRequest
3 голосов
/ 28 декабря 2011

Я думаю, что сошел с ума, ребята .. Согласно MSDN, TraceSource является поточно-ориентированным.Итак, у меня есть простое консольное приложение.В ней я заявляю:

private static readonly TraceSource ActiveTraceSource = new TraceSource("Test");

В моем app.config у меня есть;

<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
      </listeners>
    </trace>
  </system.diagnostics>

Внутри main () я делаю что-то вроде:

ActiveTraceSource.TraceInformation("Hi!");

Работает фантастически, у меня привет!на моей консоли.Затем я делаю это;

new Thread(DoWork).Start();

Внутри DoWork я делаю то же самое;

ActiveTraceSource.TraceInformation("Hi!");

Должен работать, но я не получаю второе «Привет!» .. Настройкаточка останова показывает мне, что у DoWork есть экземпляр ActiveTraceSource, и в коллекции есть прослушиватель, но в консоли ничего нет.

Это ошибка в прослушивателе консоли?Я что-то упустил?

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Я использовал следующую конфигурацию.

<system.diagnostics>
    <sources>
      <source name="Test" switchValue="All">
        <listeners>
          <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
        </listeners>
      </source>
    </sources>    
  </system.diagnostics>

Тестовый код:

class Program
        {
        private static readonly TraceSource ActiveTraceSource = new TraceSource("Test"); 
        static void Main(string[] args)
            {

            ActiveTraceSource.TraceInformation("Hi");
            Thread th = new Thread(new ThreadStart(Test));
            th.Start();
            Console.ReadLine();
            }

        static void Test()
            {
            ActiveTraceSource.TraceInformation("Hi");
            }
        }

Это работает и для меня в потоке.

1 голос
/ 28 декабря 2011

Глупо так же, как глупо делает .. при использовании трассировки, действительно помогает включить часть конфигурации ..

...