8
私はきれいな色(イェーイ。)との各種情報の表示を扱うロガークラスを持っています。しかし、それはコンソールにの手順で書かれているので、()の色を赤に設定し、テキストを書き、色を灰色に設定し、テキストを書いて、「[Error] Description ...」というエラーを表示します赤で)、私はマルチスレッドのアプリケーションを持っているので、ステップが混乱しランダムな色でランダムなものを印刷することがあります。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
@jasonh別のアプリケーションからコンソールへの書き込みがあった場合はどうなりますか? (これはもちろんこのロガーを使用しません) –