首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨线程的TraceSource不能工作吗?

跨线程的TraceSource不能工作吗?
EN

Stack Overflow用户
提问于 2011-12-28 07:52:50
回答 2查看 509关注 0票数 3

我想我已经失去理智了伙计们..根据MSDN的说法,TraceSource是线程安全的。所以我有一个简单的控制台应用程序。在它里面,我声明;

代码语言:javascript
复制
private static readonly TraceSource ActiveTraceSource = new TraceSource("Test");

在我的app.config中,我有;

代码语言:javascript
复制
<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
      </listeners>
    </trace>
  </system.diagnostics>

在我的main()中,我做了一些类似的事情;

代码语言:javascript
复制
ActiveTraceSource.TraceInformation("Hi!");

效果很棒,我有Hi!在我的控制台上。然后我这样做;

代码语言:javascript
复制
new Thread(DoWork).Start();

在DoWork中,我做了同样的事情;

代码语言:javascript
复制
ActiveTraceSource.TraceInformation("Hi!");

应该可以,但是我没有听到第二声“Hi!”。设置断点表明DoWork有一个ActiveTraceSource实例,集合中有一个侦听器,但控制台中什么都没有。

这是控制台监听程序中的错误吗?我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-28 09:50:02

愚蠢是愚蠢的行为..在使用tracesource时,包含config的部分真的很有帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-12-28 12:40:05

我使用了下面的配置。

代码语言:javascript
复制
<system.diagnostics>
    <sources>
      <source name="Test" switchValue="All">
        <listeners>
          <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
        </listeners>
      </source>
    </sources>    
  </system.diagnostics>

测试代码:

代码语言:javascript
复制
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");
            }
        }

它在线程中也适用于我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8650488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档