50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
using System;
|
|
using System.Text;
|
|
using TechnologyAssembler.Core.Diagnostics;
|
|
|
|
namespace HashCalculator.GUI
|
|
{
|
|
internal static class TracerListener
|
|
{
|
|
private static readonly object _lock = new();
|
|
private static readonly StringBuilder _sb = new();
|
|
public static event EventHandler? DataAvailaible;
|
|
|
|
public static void StartListening()
|
|
{
|
|
lock (_lock)
|
|
{
|
|
if (Tracer.TraceWrite != null)
|
|
{
|
|
throw new InvalidOperationException($"{nameof(Tracer.TraceWrite)} 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)
|
|
{
|
|
lock (_lock)
|
|
{
|
|
_sb.AppendLine(message);
|
|
}
|
|
DataAvailaible?.Invoke(null, EventArgs.Empty);
|
|
}
|
|
|
|
public static string GetText()
|
|
{
|
|
lock (_lock)
|
|
{
|
|
var result = _sb.ToString();
|
|
_sb.Clear();
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
}
|