gpt4 book ai didi

c# - 跨线程的 TraceSource 不起作用?

转载 作者:行者123 更新时间:2023-11-30 15:41:10 25 4
gpt4 key购买 nike

伙计们,我想我已经失去理智了。根据 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 实例,并且集合中有一个监听器,但控制台中没有任何内容。

这是控制台监听器中的错误吗?我错过了什么吗?

最佳答案

我使用了以下配置。

<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");
}
}

它在线程中也适用于我。

关于c# - 跨线程的 TraceSource 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com