diff --git a/src/LogExpert.Core/Classes/Persister/EncodingJsonConverter.cs b/src/LogExpert.Core/Classes/Persister/EncodingJsonConverter.cs new file mode 100644 index 00000000..95dcc29d --- /dev/null +++ b/src/LogExpert.Core/Classes/Persister/EncodingJsonConverter.cs @@ -0,0 +1,53 @@ +using System.Text; + +using Newtonsoft.Json; + +namespace LogExpert.Core.Classes.Persister; + +/// +/// Custom JsonConverter for Encoding objects. +/// Serializes the encoding as its name (e.g. "utf-8"). +/// +public class EncodingJsonConverter : JsonConverter +{ + public override bool CanConvert (Type objectType) + { + return typeof(Encoding).IsAssignableFrom(objectType); + } + + public override void WriteJson (JsonWriter writer, object? value, JsonSerializer serializer) + { + ArgumentNullException.ThrowIfNull(writer); + if (value is not Encoding encoding) + { + writer.WriteNull(); + return; + } + + writer.WriteValue(encoding.WebName); + } + + public override object? ReadJson (JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) + { + ArgumentNullException.ThrowIfNull(reader); + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + var encodingName = reader.Value?.ToString(); + if (string.IsNullOrEmpty(encodingName)) + { + return Encoding.Default; + } + + try + { + return Encoding.GetEncoding(encodingName); + } + catch (ArgumentException) + { + return Encoding.Default; + } + } +} diff --git a/src/LogExpert.Core/Classes/Persister/PersistenceData.cs b/src/LogExpert.Core/Classes/Persister/PersistenceData.cs index 71a6fea4..ca061d31 100644 --- a/src/LogExpert.Core/Classes/Persister/PersistenceData.cs +++ b/src/LogExpert.Core/Classes/Persister/PersistenceData.cs @@ -3,6 +3,8 @@ using LogExpert.Core.Classes.Filter; using LogExpert.Core.Entities; +using Newtonsoft.Json; + namespace LogExpert.Core.Classes.Persister; [Serializable] @@ -18,6 +20,7 @@ public class PersistenceData public int CurrentLine { get; set; } = -1; + [JsonConverter(typeof(EncodingJsonConverter))] public Encoding Encoding { get; set; } public string FileName { get; set; } diff --git a/src/LogExpert.Core/Classes/Persister/Persister.cs b/src/LogExpert.Core/Classes/Persister/Persister.cs index 6d4dfc15..7d202d35 100644 --- a/src/LogExpert.Core/Classes/Persister/Persister.cs +++ b/src/LogExpert.Core/Classes/Persister/Persister.cs @@ -14,6 +14,19 @@ public static class Persister private static readonly Logger _logger = LogManager.GetCurrentClassLogger(); + private static readonly JsonSerializerSettings _jsonSettings = new() + { + Converters = + { + new ColumnizerJsonConverter(), + new EncodingJsonConverter() + }, + Formatting = Formatting.Indented, + //This is needed for the BookmarkList and the Bookmark Overlay + ReferenceLoopHandling = ReferenceLoopHandling.Serialize, + PreserveReferencesHandling = PreserveReferencesHandling.Objects, + }; + #endregion #region Public methods @@ -217,24 +230,16 @@ private static string BuildSessionFileNameFromPath (string logFileName) /// The data to be persisted. This cannot be null. private static void Save (string fileName, PersistenceData persistenceData) { - var settings = new JsonSerializerSettings - { - Converters = - { - new ColumnizerJsonConverter() - }, - Formatting = Formatting.Indented, - }; - try { - var json = JsonConvert.SerializeObject(persistenceData, settings); + var json = JsonConvert.SerializeObject(persistenceData, _jsonSettings); File.WriteAllText(fileName, json, Encoding.UTF8); } - catch (Exception ex) + catch (Exception ex) when (ex is JsonSerializationException or + UnauthorizedAccessException or + IOException) { _logger.Error(ex, $"Error saving persistence data to {fileName}"); - throw; } } @@ -257,17 +262,8 @@ private static PersistenceData LoadInternal (string fileName) try { - var settings = new JsonSerializerSettings - { - Converters = - { - new ColumnizerJsonConverter() - }, - Formatting = Formatting.Indented, - }; - var json = File.ReadAllText(fileName, Encoding.UTF8); - var data = JsonConvert.DeserializeObject(json, settings); + var data = JsonConvert.DeserializeObject(json, _jsonSettings); // Call Init on all FilterParams if needed if (data?.FilterParamsList != null) { @@ -287,7 +283,8 @@ private static PersistenceData LoadInternal (string fileName) return data; } - catch (Exception ex) when (ex is UnauthorizedAccessException or + catch (Exception ex) when (ex is JsonSerializationException or + UnauthorizedAccessException or IOException) { _logger.Error(ex, $"Error loading persistence data from {fileName}"); diff --git a/src/LogExpert.Core/Classes/Persister/ProjectData.cs b/src/LogExpert.Core/Classes/Persister/ProjectData.cs index 8b9dcaf3..47f64a7d 100644 --- a/src/LogExpert.Core/Classes/Persister/ProjectData.cs +++ b/src/LogExpert.Core/Classes/Persister/ProjectData.cs @@ -1,11 +1,18 @@ namespace LogExpert.Core.Classes.Persister; +[Serializable] public class ProjectData { #region Fields - public List MemberList { get; set; } = []; + /// + /// Gets or sets the list of members. + /// + public List FileNames { get; set; } = []; + /// + /// Gets or sets the XML representation of the tab layout configuration. + /// public string TabLayoutXml { get; set; } #endregion diff --git a/src/LogExpert.Core/Classes/Persister/ProjectPersister.cs b/src/LogExpert.Core/Classes/Persister/ProjectPersister.cs index 19b0de76..726f1566 100644 --- a/src/LogExpert.Core/Classes/Persister/ProjectPersister.cs +++ b/src/LogExpert.Core/Classes/Persister/ProjectPersister.cs @@ -1,67 +1,54 @@ -using System.Collections.Generic; -using System.Xml; +using System.Text; + +using Newtonsoft.Json; + +using NLog; namespace LogExpert.Core.Classes.Persister; public static class ProjectPersister { + private static readonly Logger _logger = LogManager.GetCurrentClassLogger(); + #region Public methods - public static ProjectData LoadProjectData(string projectFileName) + public static ProjectData LoadProjectData (string projectFileName) { - ProjectData projectData = new(); - XmlDocument xmlDoc = new(); - xmlDoc.Load(projectFileName); - var fileList = xmlDoc.GetElementsByTagName("member"); - foreach (XmlNode fileNode in fileList) + try { - var fileElement = fileNode as XmlElement; - var fileName = fileElement.GetAttribute("fileName"); - projectData.MemberList.Add(fileName); - } + var settings = new JsonSerializerSettings + { + Formatting = Formatting.Indented, + }; - var layoutElements = xmlDoc.GetElementsByTagName("layout"); - if (layoutElements.Count > 0) + var json = File.ReadAllText(projectFileName, Encoding.UTF8); + return JsonConvert.DeserializeObject(json, settings); + } + catch (Exception ex) when (ex is UnauthorizedAccessException or + IOException) { - projectData.TabLayoutXml = layoutElements[0].InnerXml; + _logger.Error(ex, $"Error loading persistence data from {projectFileName}"); + return new ProjectData(); } - - return projectData; } - - public static void SaveProjectData(string projectFileName, ProjectData projectData) + public static void SaveProjectData (string projectFileName, ProjectData projectData) { - XmlDocument xmlDoc = new(); - var rootElement = xmlDoc.CreateElement("logexpert"); - xmlDoc.AppendChild(rootElement); - var projectElement = xmlDoc.CreateElement("project"); - rootElement.AppendChild(projectElement); - var membersElement = xmlDoc.CreateElement("members"); - projectElement.AppendChild(membersElement); - SaveProjectMembers(xmlDoc, membersElement, projectData.MemberList); + var settings = new JsonSerializerSettings + { + Formatting = Formatting.Indented, + }; - if (projectData.TabLayoutXml != null) + try { - var layoutElement = xmlDoc.CreateElement("layout"); - layoutElement.InnerXml = projectData.TabLayoutXml; - rootElement.AppendChild(layoutElement); + var json = JsonConvert.SerializeObject(projectData, settings); + File.WriteAllText(projectFileName, json, Encoding.UTF8); } - - xmlDoc.Save(projectFileName); - } - - #endregion - - #region Private Methods - - private static void SaveProjectMembers(XmlDocument xmlDoc, XmlNode membersNode, List memberList) - { - foreach (var fileName in memberList) + catch (Exception ex) when (ex is JsonSerializationException or + UnauthorizedAccessException or + IOException) { - var memberElement = xmlDoc.CreateElement("member"); - membersNode.AppendChild(memberElement); - memberElement.SetAttribute("fileName", fileName); + _logger.Error(ex, $"Error saving persistence data to {projectFileName}"); } } diff --git a/src/LogExpert.Core/Entities/Bookmark.cs b/src/LogExpert.Core/Entities/Bookmark.cs index 642098e8..4ae563a3 100644 --- a/src/LogExpert.Core/Entities/Bookmark.cs +++ b/src/LogExpert.Core/Entities/Bookmark.cs @@ -1,5 +1,7 @@ using System.Drawing; +using Newtonsoft.Json; + namespace LogExpert.Core.Entities; [Serializable] @@ -7,6 +9,9 @@ public class Bookmark { #region cTor + [JsonConstructor] + public Bookmark () { } + public Bookmark (int lineNum) { LineNum = lineNum; diff --git a/src/LogExpert.UI/Controls/LogWindow/LogWindow.cs b/src/LogExpert.UI/Controls/LogWindow/LogWindow.cs index 6473f427..071e5740 100644 --- a/src/LogExpert.UI/Controls/LogWindow/LogWindow.cs +++ b/src/LogExpert.UI/Controls/LogWindow/LogWindow.cs @@ -4630,6 +4630,11 @@ private void CheckForFilterDirty () [SupportedOSPlatform("windows")] private bool IsFilterSearchDirty (FilterParams filterParams) { + if (filterParams == null || filterParams.SearchText == null) + { + return true; + } + if (!filterParams.SearchText.Equals(filterComboBox.Text, StringComparison.Ordinal)) { return true; diff --git a/src/LogExpert.UI/Dialogs/LogTabWindow/LogTabWindow.cs b/src/LogExpert.UI/Dialogs/LogTabWindow/LogTabWindow.cs index 2f95deec..0918752b 100644 --- a/src/LogExpert.UI/Dialogs/LogTabWindow/LogTabWindow.cs +++ b/src/LogExpert.UI/Dialogs/LogTabWindow/LogTabWindow.cs @@ -386,7 +386,7 @@ public LogWindow.LogWindow AddFileTab (string givenFileName, bool isTempFile, st } // this.BeginInvoke(new LoadFileDelegate(logWindow.LoadFile), new object[] { logFileName, encoding }); - Task.Run(() => logWindow.LoadFile(logFileName, encodingOptions)); + _ = Task.Run(() => logWindow.LoadFile(logFileName, encodingOptions)); return logWindow; } @@ -404,7 +404,7 @@ public LogWindow.LogWindow AddMultiFileTab (string[] fileNames) multiFileEnabledStripMenuItem.Checked = true; EncodingOptions encodingOptions = new(); FillDefaultEncodingFromSettings(encodingOptions); - BeginInvoke(new LoadMultiFilesDelegate(logWindow.LoadFilesAsMulti), fileNames, encodingOptions); + _ = BeginInvoke(new LoadMultiFilesDelegate(logWindow.LoadFilesAsMulti), fileNames, encodingOptions); AddToFileHistory(fileNames[0]); return logWindow; } @@ -412,7 +412,7 @@ public LogWindow.LogWindow AddMultiFileTab (string[] fileNames) [SupportedOSPlatform("windows")] public void LoadFiles (string[] fileNames) { - Invoke(new AddFileTabsDelegate(AddFileTabs), [fileNames]); + _ = Invoke(new AddFileTabsDelegate(AddFileTabs), [fileNames]); } [SupportedOSPlatform("windows")] @@ -450,7 +450,7 @@ public ILogLineColumnizer GetColumnizerHistoryEntry (string fileName) } } - ConfigManager.Settings.ColumnizerHistoryList.Remove(entry); // no valid name -> remove entry + _ = ConfigManager.Settings.ColumnizerHistoryList.Remove(entry); // no valid name -> remove entry } return null; @@ -562,7 +562,7 @@ public void SelectTab (ILogWindow logWindow) [SupportedOSPlatform("windows")] public void SetForeground () { - NativeMethods.SetForegroundWindow(Handle); + _ = NativeMethods.SetForegroundWindow(Handle); if (WindowState == FormWindowState.Minimized) { if (_wasMaximized) @@ -597,7 +597,7 @@ public void FollowTailChanged (LogWindow.LogWindow logWindow, bool isEnabled, bo if (Preferences.ShowTailState) { var icon = GetIcon(data.DiffSum, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWindow, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWindow, icon); } } @@ -762,7 +762,7 @@ private void AddFileTabs (string[] fileNames) } else { - AddFileTab(fileName, false, null, false, null); + _ = AddFileTab(fileName, false, null, false, null); } } } @@ -915,7 +915,7 @@ private void FillHistoryMenu () foreach (var file in ConfigManager.Settings.FileHistoryList) { ToolStripItem item = new ToolStripMenuItem(file); - strip.Items.Add(item); + _ = strip.Items.Add(item); } strip.ItemClicked += OnHistoryItemClicked; @@ -928,7 +928,7 @@ private void RemoveLogWindow (LogWindow.LogWindow logWindow) { lock (_logWindowList) { - _logWindowList.Remove(logWindow); + _ = _logWindowList.Remove(logWindow); } DisconnectEventHandlers(logWindow); @@ -944,7 +944,7 @@ private void RemoveAndDisposeLogWindow (LogWindow.LogWindow logWindow, bool dont lock (_logWindowList) { - _logWindowList.Remove(logWindow); + _ = _logWindowList.Remove(logWindow); } logWindow.Close(dontAsk); @@ -981,7 +981,7 @@ private void FillHighlightComboBox () groupsComboBoxHighlightGroups.Items.Clear(); foreach (var group in HighlightGroupList) { - groupsComboBoxHighlightGroups.Items.Add(group.GroupName); + _ = groupsComboBoxHighlightGroups.Items.Add(group.GroupName); if (group.GroupName.Equals(currentGroupName, StringComparison.Ordinal)) { groupsComboBoxHighlightGroups.Text = group.GroupName; @@ -1050,7 +1050,7 @@ private void LoadFiles (string[] names, bool invertLogic) return; } - AddFileTab(names[0], false, null, false, null); + _ = AddFileTab(names[0], false, null, false, null); return; } @@ -1089,7 +1089,7 @@ private void LoadFiles (string[] names, bool invertLogic) } else { - AddMultiFileTab(names); + _ = AddMultiFileTab(names); } } @@ -1283,7 +1283,7 @@ private void ProgressBarUpdateWorker (ProgressEventArgs e) _logger.Error(ex, "Error during ProgressBarUpdateWorker value {0}, min {1}, max {2}, visible {3}", e.Value, e.MinValue, e.MaxValue, e.Visible); } - Invoke(new System.Windows.Forms.MethodInvoker(statusStrip.Refresh)); + _ = Invoke(new System.Windows.Forms.MethodInvoker(statusStrip.Refresh)); } } @@ -1304,7 +1304,7 @@ private void StatusLineEventWorker (StatusLineEventArgs e) labelCurrentLine.Size = TextRenderer.MeasureText(labelCurrentLine.Text, labelCurrentLine.Font); if (statusStrip.InvokeRequired) { - statusStrip.BeginInvoke(new System.Windows.Forms.MethodInvoker(statusStrip.Refresh)); + _ = statusStrip.BeginInvoke(new System.Windows.Forms.MethodInvoker(statusStrip.Refresh)); } else { @@ -1383,7 +1383,7 @@ private Icon CreateLedIcon (int level, bool dirty, int tailState, int syncMode) // a managed copy of icon. then the unmanaged win32 handle is destroyed var iconHandle = bmp.GetHicon(); var icon = Icon.FromHandle(iconHandle).Clone() as Icon; - NativeMethods.DestroyIcon(iconHandle); + _ = NativeMethods.DestroyIcon(iconHandle); gfx.Dispose(); bmp.Dispose(); @@ -1414,7 +1414,7 @@ private void CreateIcons () private void FileNotFound (LogWindow.LogWindow logWin) { var data = logWin.Tag as LogWindowData; - BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWin, _deadIcon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWin, _deadIcon); dragControlDateTime.Visible = false; } @@ -1423,7 +1423,7 @@ private void FileRespawned (LogWindow.LogWindow logWin) { var data = logWin.Tag as LogWindowData; var icon = GetIcon(0, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWin, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWin, icon); } [SupportedOSPlatform("windows")] @@ -1436,7 +1436,7 @@ private void ShowLedPeak (LogWindow.LogWindow logWin) } var icon = GetIcon(data.DiffSum, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWin, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWin, icon); } private int GetLevelFromDiff (int diff) @@ -1488,7 +1488,7 @@ private void LedThreadProc () } var icon = GetIcon(data.DiffSum, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWindow, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWindow, icon); } } } @@ -1639,7 +1639,7 @@ private void SetTabIcons (Preferences preferences) { var data = logWindow.Tag as LogWindowData; var icon = GetIcon(data.DiffSum, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWindow, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), logWindow, icon); } } } @@ -1657,7 +1657,7 @@ private void SetToolIcon (ToolEntry entry, ToolStripItem item) ? ToolStripItemDisplayStyle.ImageAndText : ToolStripItemDisplayStyle.Image; - NativeMethods.DestroyIcon(icon.Handle); + _ = NativeMethods.DestroyIcon(icon.Handle); icon.Dispose(); } @@ -1726,7 +1726,7 @@ private void StartTool (string cmd, string args, bool sysoutPipe, string columni catch (Win32Exception e) { _logger.Error(e); - MessageBox.Show(e.Message); + _ = MessageBox.Show(e.Message); return; } @@ -1753,7 +1753,7 @@ private void StartTool (string cmd, string args, bool sysoutPipe, string columni catch (Exception e) { _logger.Error(e); - MessageBox.Show(e.Message); + _ = MessageBox.Show(e.Message); } } } @@ -1818,16 +1818,11 @@ private void LoadProject (string projectFileName, bool restoreLayout) if (projectData != null) { - foreach (var fileName in projectData.MemberList) + foreach (var fileName in projectData.FileNames) { - if (hasLayoutData) - { - AddFileTabDeferred(fileName, false, null, true, null); - } - else - { - AddFileTab(fileName, false, null, true, null); - } + _ = hasLayoutData + ? AddFileTabDeferred(fileName, false, null, true, null) + : AddFileTab(fileName, false, null, true, null); } if (hasLayoutData && restoreLayout) @@ -1856,8 +1851,8 @@ private void FillToolLauncherBar () 'U', 'V', 'W', 'X', 'Y', 'Z' ]; toolsToolStripMenuItem.DropDownItems.Clear(); - toolsToolStripMenuItem.DropDownItems.Add(configureToolStripMenuItem); - toolsToolStripMenuItem.DropDownItems.Add(configureToolStripSeparator); + _ = toolsToolStripMenuItem.DropDownItems.Add(configureToolStripMenuItem); + _ = toolsToolStripMenuItem.DropDownItems.Add(configureToolStripSeparator); externalToolsToolStrip.Items.Clear(); var num = 0; externalToolsToolStrip.SuspendLayout(); @@ -1872,7 +1867,7 @@ private void FillToolLauncherBar () }; SetToolIcon(tool, button); - externalToolsToolStrip.Items.Add(button); + _ = externalToolsToolStrip.Items.Add(button); } num++; @@ -1882,7 +1877,7 @@ private void FillToolLauncherBar () }; SetToolIcon(tool, menuItem); - toolsToolStripMenuItem.DropDownItems.Add(menuItem); + _ = toolsToolStripMenuItem.DropDownItems.Add(menuItem); } externalToolsToolStrip.ResumeLayout(); @@ -1924,7 +1919,7 @@ private string SaveLayout () using StreamReader r = new(memStream); dockPanel.SaveAsXml(memStream, Encoding.UTF8, true); - memStream.Seek(0, SeekOrigin.Begin); + _ = memStream.Seek(0, SeekOrigin.Begin); var resultXml = r.ReadToEnd(); r.Close(); @@ -1940,7 +1935,7 @@ private void RestoreLayout (string layoutXml) w.Write(layoutXml); w.Flush(); - memStream.Seek(0, SeekOrigin.Begin); + _ = memStream.Seek(0, SeekOrigin.Begin); dockPanel.LoadFromXml(memStream, DeserializeDockContent, true); } @@ -2070,7 +2065,7 @@ private void OnStripMouseUp (object sender, MouseEventArgs e) { if (sender is ToolStripDropDown dropDown) { - AddFileTab(dropDown.Text, false, null, false, null); + _ = AddFileTab(dropDown.Text, false, null, false, null); } } @@ -2078,7 +2073,7 @@ private void OnHistoryItemClicked (object sender, ToolStripItemClickedEventArgs { if (string.IsNullOrEmpty(e.ClickedItem.Text) == false) { - AddFileTab(e.ClickedItem.Text, false, null, false, null); + _ = AddFileTab(e.ClickedItem.Text, false, null, false, null); } } @@ -2128,7 +2123,7 @@ private void OnSelectFilterToolStripMenuItemClick (object sender, EventArgs e) { //logWindow.SetColumnizer(form.SelectedColumnizer); SetColumnizerFx fx = logWindow.ForceColumnizer; - logWindow.Invoke(fx, form.SelectedColumnizer); + _ = logWindow.Invoke(fx, form.SelectedColumnizer); SetColumnizerHistoryEntry(logWindow.FileName, form.SelectedColumnizer); } else @@ -2146,7 +2141,7 @@ private void OnSelectFilterToolStripMenuItemClick (object sender, EventArgs e) if (CurrentLogWindow.CurrentColumnizer.GetType() != form.SelectedColumnizer.GetType()) { SetColumnizerFx fx = CurrentLogWindow.ForceColumnizer; - CurrentLogWindow.Invoke(fx, form.SelectedColumnizer); + _ = CurrentLogWindow.Invoke(fx, form.SelectedColumnizer); SetColumnizerHistoryEntry(CurrentLogWindow.FileName, form.SelectedColumnizer); } @@ -2276,7 +2271,7 @@ private void OnAboutToolStripMenuItemClick (object sender, EventArgs e) TopMost = TopMost }; - aboutBox.ShowDialog(); + _ = aboutBox.ShowDialog(); } private void OnFilterToolStripMenuItemClick (object sender, EventArgs e) @@ -2294,7 +2289,7 @@ private void OnMultiFileToolStripMenuItemClick (object sender, EventArgs e) [SupportedOSPlatform("windows")] private void OnGuiStateUpdate (object sender, GuiStateArgs e) { - BeginInvoke(GuiStateUpdateWorker, e); + _ = BeginInvoke(GuiStateUpdateWorker, e); } private void OnColumnizerChanged (object sender, ColumnizerEventArgs e) @@ -2319,7 +2314,7 @@ private void OnBookmarkRemoved (object sender, EventArgs e) private void OnProgressBarUpdate (object sender, ProgressEventArgs e) { - Invoke(ProgressBarUpdateWorker, e); + _ = Invoke(ProgressBarUpdateWorker, e); } private void OnStatusLineEvent (object sender, StatusLineEventArgs e) @@ -2414,19 +2409,19 @@ private void OnFileSizeChanged (object sender, LogEventArgs e) } var icon = GetIcon(diff, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), (LogWindow.LogWindow)sender, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), (LogWindow.LogWindow)sender, icon); } } } private void OnLogWindowFileNotFound (object sender, EventArgs e) { - Invoke(new FileNotFoundDelegate(FileNotFound), sender); + _ = Invoke(new FileNotFoundDelegate(FileNotFound), sender); } private void OnLogWindowFileRespawned (object sender, EventArgs e) { - Invoke(new FileRespawnedDelegate(FileRespawned), sender); + _ = Invoke(new FileRespawnedDelegate(FileRespawned), sender); } private void OnLogWindowFilterListChanged (object sender, FilterListChangedEventArgs e) @@ -2466,7 +2461,7 @@ private void OnTailFollowed (object sender, EventArgs e) var data = ((LogWindow.LogWindow)sender).Tag as LogWindowData; data.Dirty = false; var icon = GetIcon(data.DiffSum, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), (LogWindow.LogWindow)sender, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), (LogWindow.LogWindow)sender, icon); } } } @@ -2479,7 +2474,7 @@ private void OnLogWindowSyncModeChanged (object sender, SyncModeEventArgs e) var data = ((LogWindow.LogWindow)sender).Tag as LogWindowData; data.SyncMode = e.IsTimeSynced ? 1 : 0; var icon = GetIcon(data.DiffSum, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), (LogWindow.LogWindow)sender, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), (LogWindow.LogWindow)sender, icon); } else { @@ -2542,7 +2537,7 @@ private void OnReloadToolStripMenuItemClick (object sender, EventArgs e) { var data = CurrentLogWindow.Tag as LogWindowData; var icon = GetIcon(0, data); - BeginInvoke(new SetTabIconDelegate(SetTabIcon), CurrentLogWindow, icon); + _ = BeginInvoke(new SetTabIconDelegate(SetTabIcon), CurrentLogWindow, icon); CurrentLogWindow.Reload(); } } @@ -2565,7 +2560,7 @@ private void OnDateTimeDragControlValueDragged (object sender, EventArgs e) [SupportedOSPlatform("windows")] private void OnDateTimeDragControlValueChanged (object sender, EventArgs e) { - CurrentLogWindow?.ScrollToTimestamp(dragControlDateTime.DateTime, true, true); + _ = (CurrentLogWindow?.ScrollToTimestamp(dragControlDateTime.DateTime, true, true)); } [SupportedOSPlatform("windows")] @@ -2767,7 +2762,7 @@ private void OnSaveProjectToolStripMenuItemClick (object sender, EventArgs e) ProjectData projectData = new() { - MemberList = fileNames, + FileNames = fileNames, TabLayoutXml = SaveLayout() }; ProjectPersister.SaveProjectData(fileName, projectData); @@ -2814,7 +2809,7 @@ private void OnFindInExplorerToolStripMenuItemClick (object sender, EventArgs e) explorer.StartInfo.FileName = "explorer.exe"; explorer.StartInfo.Arguments = "/e,/select," + logWindow.Title; explorer.StartInfo.UseShellExecute = false; - explorer.Start(); + _ = explorer.Start(); } private void TruncateFileToolStripMenuItem_Click (object sender, EventArgs e) @@ -2912,7 +2907,7 @@ private void OnThrowExceptionGUIThreadToolStripMenuItemClick (object sender, Eve private void OnThrowExceptionBackgroundThToolStripMenuItemClick (object sender, EventArgs e) { ExceptionFx fx = ThrowExceptionFx; - fx.BeginInvoke(null, null); + _ = fx.BeginInvoke(null, null); } private void OnThrowExceptionBackgroundThreadToolStripMenuItemClick (object sender, EventArgs e)