35 lines
1.2 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|