簡體   English   中英

Debug.WriteLine鎖定

[英]Debug.WriteLine locks

我的程序經常因死鎖而停止。 當我進行一次破解並查看線程時,我看到三個線程卡在我們的日志記錄功能中:

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集合的附加跟蹤偵聽

其中一個跟蹤偵聽器必須在內部具有鎖定,從而導致死鎖。 檢查你的聽眾代碼,因為它很可能是罪魁禍首。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM