HashCalculator.GUI/TracerListener.cs
2020-04-03 04:48:57 +02:00

35 lines
1.2 KiB
C#

using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using TechnologyAssembler.Core.Diagnostics;
namespace HashCalculator.GUI
{
internal static class TracerListener
{
private static Action<string>? _onData = null;
[SuppressMessage("Globalization", "CA1308:将字符串规范化为大写", Justification = "<挂起>")]
[SuppressMessage("Globalization", "CA1303:请不要将文本作为本地化参数传递", Justification = "<挂起>")]
public static void StartListening(Action<string> action)
{
var original = Interlocked.CompareExchange(ref _onData, action, null);
if(original != null)
{
throw new InvalidOperationException("Action already set");
}
Tracer.TraceWrite = new TraceWriteDelegate((s, t, m) =>
{
var type = $"{t} ".ToLowerInvariant().Substring(0, 4);
WriteLine($"[{s}] {type}: {m}");
});
}
public static void WriteLine(string message)
{
Interlocked.CompareExchange(ref _onData, null, null)?.Invoke($"{message}\r\n");
}
}
}