Debug.WriteLine 锁

2024-02-27

我的程序经常因死锁而停止。当我进行全部破坏并查看线程时,我发现三个线程卡在我们的日志记录函数中:

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
}

调试.WriteLine http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.writeline.aspx将日志消息写入附加到的附加跟踪侦听器听众 http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.listeners.aspx收藏。

您的跟踪侦听器之一必须在内部有一个锁,这会导致死锁。检查您的侦听器代码,因为它很可能是罪魁祸首。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Debug.WriteLine 锁 的相关文章

随机推荐