Debug.WriteLine锁定

我的程序经常因死锁而停止。 当我做一个全部细节并查看线程时,我看到三个线程卡在我们的日志记录function中:

public class Logging { public static void WriteClientLog(LogLevel logLevel, string message) { #if DEBUG System.Diagnostics.Debug.WriteLine(String.Format("{0} {1}", DateTime.Now.ToString("HH:mm:ss"), message)); //LOCK #endif //...Log4net logging } } 

如果我让程序继续,线程仍然停留在该行上。

我无法看到它可以锁定的位置。 调试类,字符串类和日期时间类似乎是线程安全的。

当我删除#if DEBUG System... #endif代码时,错误就消失了,但我很好奇为什么会出现这种情况。

线程一:

 public void CleanCache() { Logging.WriteClientLog(LogLevel.Debug, "Start clean cache.");//Stuck } 

线程二:

 private void AliveThread() { Logging.WriteClientLog(LogLevel.Debug, "Check connection");//Stuck } 

Debug.WriteLine将日志记录消息写入附加到Listeners集合的附加Trace Listener。

其中一个跟踪侦听器必须在内部具有锁定,从而导致死锁。 检查你的听众代码,因为它很可能是罪魁祸首。