diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index f96cdfb..adb7c77 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -561,9 +561,7 @@ namespace Elwig.Helpers { Log = "Application", Source = ".NET Runtime", }; - return log.Entries.Cast() - .Where(e => e.Message.StartsWith("Application: Elwig.exe")) - .ToList(); + return [.. log.Entries.OfType().Where(e => e.InstanceId == 1026).Where(e => e.Message.StartsWith("Application: Elwig.exe"))]; } public static int GetEntityIdetifierForPk(params object?[] primaryKey) { diff --git a/Elwig/Windows/LogWindow.xaml.cs b/Elwig/Windows/LogWindow.xaml.cs index 4531a1d..3654cb2 100644 --- a/Elwig/Windows/LogWindow.xaml.cs +++ b/Elwig/Windows/LogWindow.xaml.cs @@ -1,7 +1,9 @@ using Elwig.Helpers; using System.Diagnostics; using System.Linq; +using System.Threading.Tasks; using System.Windows; +using System.Windows.Input; namespace Elwig.Windows { public partial class LogWindow : Window { @@ -11,28 +13,34 @@ namespace Elwig.Windows { WindowState = WindowState.Maximized; } - private void Window_Loaded(object sender, RoutedEventArgs evt) { - var log = Utils.GetLogEntries(); - EventList.ItemsSource = log - .Select(e => new { - Event = e, - Lines = e.Message.Split('\n').ToArray(), - }) - .Select(e => new { - e.Event, - Exception = e.Lines.FirstOrDefault(l => l.StartsWith("Exception Info: "))?[16..].Trim().Split(':', 2), - Location = e.Lines.FirstOrDefault(l => l.StartsWith(" at Elwig."))?[5..].Trim(), - }) - .Select(e => new { - e.Event, - e.Exception, - ExceptionName = e.Exception?[0].Trim(), - ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null, - e.Location, - }) - .OrderByDescending(e => e.Event.TimeGenerated) - .ToList(); - EventList.SelectedIndex = 0; + private async void Window_Loaded(object sender, RoutedEventArgs evt) { + Mouse.OverrideCursor = Cursors.Wait; + await Task.Run(async () => { + var list = Utils.GetLogEntries() + .Select(e => new { + Event = e, + Lines = e.Message.Split('\n').ToArray(), + }) + .Select(e => new { + e.Event, + Exception = e.Lines.FirstOrDefault(l => l.StartsWith("Exception Info: "))?[16..].Trim().Split(':', 2), + Location = e.Lines.FirstOrDefault(l => l.StartsWith(" at Elwig."))?[5..].Trim(), + }) + .Select(e => new { + e.Event, + e.Exception, + ExceptionName = e.Exception?[0].Trim(), + ExceptionMessage = e.Exception?.Length >= 2 ? e.Exception?[1].Trim() : null, + e.Location, + }) + .OrderByDescending(e => e.Event.TimeGenerated) + .ToList(); + await App.MainDispatcher.BeginInvoke(() => { + EventList.ItemsSource = list; + EventList.SelectedIndex = 0; + }); + }); + Mouse.OverrideCursor = null; } private void EventList_SelectionChanged(object sender, RoutedEventArgs evt) {