8
我有一個記錄器類處理各種信息顯示漂亮的顏色(耶)。然而,因爲它寫入到控制檯分開的步驟(即設置顏色爲紅色,寫文本,設置顏色爲灰色,寫文本,將呈現的東西「[錯誤]說明...」與錯誤是在紅色),但我有一個多線程應用程序,所以這些步驟可以混合起來,隨機顏色隨機打印。如何通過C#.NET中的線程鎖定控制檯?
我知道lock
關鍵字,但它不能用於控制檯等靜態類。
下面是一些示例代碼,如果我還不清楚:
using System;
using System.Text;
namespace N.Utilities.IO
{
public static class Logger
{
private static void WriteColored(string value, ConsoleColor color)
{
if (Logger.UseColor)
{
Console.ForegroundColor = color;
Console.Write(value);
Console.ForegroundColor = ConsoleColor.Gray;
}
else
{
Console.Write(value);
}
}
private static void WriteLineColored(string value, ConsoleColor color)
{
if (Logger.UseColor)
{
Console.ForegroundColor = color;
Console.WriteLine(value);
Console.ForegroundColor = ConsoleColor.Gray;
}
else
{
Console.Write(value);
}
}
private static bool useColor = true;
public static bool UseColor
{
get
{
return Logger.useColor;
}
set
{
Logger.useColor = value;
}
}
public static void Inform(string value)
{
Logger.WriteColored(" [Info] ", ConsoleColor.White);
Console.WriteLine(value);
}
public static void Warn(string value)
{
Logger.WriteColored(" [Warning] ", ConsoleColor.Yellow);
Console.WriteLine(value);
}
public static void Error(string value)
{
Logger.WriteColored(" [Error] ", ConsoleColor.Red);
Console.WriteLine(value);
}
}
非常感謝:)正是我需要的。 – Lazlo 2009-10-06 00:00:06
@jasonh如果另一個應用程序同時寫入控制檯會怎麼樣? (當然不會使用這個記錄器) – 2014-05-17 17:39:41