Attempt to fix app hang on LogMe event

This commit is contained in:
Michael Bucari-Tovo 2022-05-24 07:36:17 -06:00
parent 43a4d0d1d7
commit ee62d9ae8d
2 changed files with 22 additions and 10 deletions

View File

@ -19,7 +19,7 @@ namespace LibationWinForms.ProcessQueue
LogErrorString += (_, text) => Serilog.Log.Logger.Error(text);
LogError += (_, tuple) => Serilog.Log.Logger.Error(tuple.Item1, tuple.Item2 ?? "Automated backup: error");
}
private static ILogForm LogForm;
public static LogMe RegisterForm<T>(T form) where T : ILogForm
{
var logMe = new LogMe();
@ -27,19 +27,31 @@ namespace LibationWinForms.ProcessQueue
if (form is null)
return logMe;
logMe.LogInfo += (_, text) => form?.WriteLine(text);
LogForm = form;
logMe.LogErrorString += (_, text) => form?.WriteLine(text);
logMe.LogError += (_, tuple) =>
{
form?.WriteLine(tuple.Item2 ?? "Automated backup: error");
form?.WriteLine("ERROR: " + tuple.Item1.Message);
};
logMe.LogInfo += LogMe_LogInfo;
logMe.LogErrorString += LogMe_LogErrorString;
logMe.LogError += LogMe_LogError;
return logMe;
}
private static async void LogMe_LogError(object sender, (Exception, string) tuple)
{
await Task.Run(() => LogForm?.WriteLine(tuple.Item2 ?? "Automated backup: error"));
await Task.Run(() => LogForm?.WriteLine("ERROR: " + tuple.Item1.Message));
}
private static async void LogMe_LogErrorString(object sender, string text)
{
await Task.Run(() => LogForm?.WriteLine(text));
}
private static async void LogMe_LogInfo(object sender, string text)
{
await Task.Run(() => LogForm?.WriteLine(text));
}
public void Info(string text) => LogInfo?.Invoke(this, text);
public void Error(string text) => LogErrorString?.Invoke(this, text);
public void Error(Exception ex, string text = null) => LogError?.Invoke(this, (ex, text));

View File

@ -169,7 +169,7 @@ namespace LibationWinForms.ProcessQueue
if (IsDisposed) return;
var timeStamp = DateTime.Now;
logDGV.Rows.Add(timeStamp, text.Trim());
Invoke(() => logDGV.Rows.Add(timeStamp, text.Trim()));
}
#region Control event handlers