2010-05-03 29 views
4

我的程序經常停止併發生死鎖。當我做一個突破一切,看看我看到三個線程都停留在我們的記錄功能的線程:Debug.WriteLine鎖

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 
    } 
} 

如果我讓程序繼續線程仍停留在該行。

我看不到這可以鎖定。調試類,字符串類& datetime類似乎是線程安全的。

錯誤消失,當我刪除#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 
} 
+0

所以,如果你只是刪除if調試和endif消息,但在方法中留下寫行,它工作正常嗎? – Tejs 2010-05-03 15:55:54

+0

您是否配置了自定義跟蹤偵聽器? – 2010-05-03 16:01:59

+0

我遇到了一個類似的問題......最終導致我轉而使用MS的企業庫文件日誌記錄。使頭痛少得多。 – 2010-05-03 16:56:25

回答

4

Debug.WriteLine寫入日誌消息附着在Listeners收集附加的跟蹤偵聽器。

您的一個跟蹤偵聽器必須在內部有一個導致死鎖的鎖。檢查你的監聽器代碼,因爲它很可能是罪魁禍首。

+0

我沒有任何自定義偵聽器... – ephraim 2017-11-05 14:42:20

相關問題