diff --git a/src/LogExpert/Classes/DelayedTrigger.cs b/src/LogExpert/Classes/DelayedTrigger.cs
deleted file mode 100644
index a69f0096..00000000
--- a/src/LogExpert/Classes/DelayedTrigger.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-using System;
-using System.Threading;
-
-namespace LogExpert.Classes
-{
- ///
- /// This class receives Trigger calls and sends an event as soons as no more input triggers calls
- /// are received for a given time.
- ///
- internal class DelayedTrigger
- {
- #region Fields
-
- private readonly Thread thread = null;
- private readonly EventWaitHandle timerEvent = new ManualResetEvent(false);
- private readonly EventWaitHandle wakeupEvent = new ManualResetEvent(false);
- private bool shouldCancel = false;
- private readonly int waitTime = 0;
-
- #endregion
-
- #region cTor
-
- public DelayedTrigger(int waitTimeMs)
- {
- this.waitTime = waitTimeMs;
- this.thread = new Thread(new ThreadStart(worker));
- this.thread.IsBackground = true;
- this.thread.Start();
- }
-
- #endregion
-
- #region Delegates
-
- public delegate void SignalEventHandler(object sender, EventArgs e);
-
- #endregion
-
- #region Events
-
- public event SignalEventHandler Signal;
-
- #endregion
-
- #region Public methods
-
- public void Trigger()
- {
- this.timerEvent.Set();
- this.wakeupEvent.Set();
- }
-
- public void TriggerImmediate()
- {
- OnSignal();
- }
-
- public void Stop()
- {
- this.shouldCancel = true;
- this.wakeupEvent.Set();
- }
-
- #endregion
-
- #region Private Methods
-
- private void worker()
- {
- while (!this.shouldCancel)
- {
- this.wakeupEvent.WaitOne();
- if (this.shouldCancel)
- {
- return;
- }
- this.wakeupEvent.Reset();
-
- while (!this.shouldCancel)
- {
- bool signaled = this.timerEvent.WaitOne(this.waitTime, true);
- this.timerEvent.Reset();
- if (!signaled)
- {
- break;
- }
- }
- // timeout with no new Trigger -> send event
- if (!this.shouldCancel)
- {
- OnSignal();
- }
- }
- }
-
- #endregion
-
- protected void OnSignal()
- {
- if (Signal != null)
- {
- Signal(this, new EventArgs());
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs b/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs
index 0cd91c8b..3642814f 100644
--- a/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs
+++ b/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs
@@ -46,7 +46,6 @@ internal partial class LogTabWindow : Form
private readonly EventWaitHandle _statusLineEventHandle = new AutoResetEvent(false);
private readonly EventWaitHandle _statusLineEventWakeupHandle = new ManualResetEvent(false);
- private readonly object _statusLineLock = new();
private readonly Brush _syncLedBrush;
private readonly StringFormat _tabStringFormat = new();
private readonly Brush[] _tailLedBrush = new Brush[3];
@@ -56,8 +55,6 @@ internal partial class LogTabWindow : Form
private LogWindow.LogWindow _currentLogWindow;
private bool _firstBookmarkWindowShow = true;
- private StatusLineEventArgs _lastStatusLineEvent;
-
private Thread _ledThread;
//Settings settings;
@@ -66,7 +63,6 @@ internal partial class LogTabWindow : Form
private bool _skipEvents;
- private Thread _statusLineThread;
private bool _wasMaximized;
#endregion
@@ -273,8 +269,6 @@ public void ChangeTheme(Control.ControlCollection container)
private delegate void FileRespawnedDelegate(LogWindow.LogWindow logWin);
- private delegate void GuiStateUpdateWorkerDelegate(GuiStateArgs e);
-
public delegate void HighlightSettingsChangedEventHandler(object sender, EventArgs e);
private delegate void LoadMultiFilesDelegate(string[] fileName, EncodingOptions encodingOptions);
diff --git a/src/LogExpert/Controls/LogTabWindow/LogTabWindowEventHandlers.cs b/src/LogExpert/Controls/LogTabWindow/LogTabWindowEventHandlers.cs
index 080b5785..05683ee3 100644
--- a/src/LogExpert/Controls/LogTabWindow/LogTabWindowEventHandlers.cs
+++ b/src/LogExpert/Controls/LogTabWindow/LogTabWindowEventHandlers.cs
@@ -64,10 +64,6 @@ private void OnLogTabWindowLoad(object sender, EventArgs e)
_ledThread.IsBackground = true;
_ledThread.Start();
- _statusLineThread = new Thread(StatusLineThreadFunc);
- _statusLineThread.IsBackground = true;
- _statusLineThread.Start();
-
FillHighlightComboBox();
FillToolLauncherBar();
#if !DEBUG
@@ -83,7 +79,6 @@ private void OnLogTabWindowClosing(object sender, CancelEventArgs e)
_statusLineEventHandle.Set();
_statusLineEventWakeupHandle.Set();
_ledThread.Join();
- _statusLineThread.Join();
IList deleteLogWindowList = new List();
ConfigManager.Settings.alwaysOnTop = TopMost && ConfigManager.Settings.preferences.allowOnlyOneInstance;
@@ -333,7 +328,7 @@ private void OnMultiFileToolStripMenuItemClick(object sender, EventArgs e)
private void OnGuiStateUpdate(object sender, GuiStateArgs e)
{
- BeginInvoke(new GuiStateUpdateWorkerDelegate(GuiStateUpdateWorker), e);
+ BeginInvoke(GuiStateUpdateWorker, e);
}
private void OnColumnizerChanged(object sender, ColumnizerEventArgs e)
@@ -363,12 +358,7 @@ private void OnProgressBarUpdate(object sender, ProgressEventArgs e)
private void OnStatusLineEvent(object sender, StatusLineEventArgs e)
{
- lock (_statusLineLock)
- {
- _lastStatusLineEvent = e;
- _statusLineEventHandle.Set();
- _statusLineEventWakeupHandle.Set();
- }
+ StatusLineEventWorker(e);
}
private void OnFollowTailCheckBoxClick(object sender, EventArgs e)
diff --git a/src/LogExpert/Controls/LogTabWindow/LogTabWindowPrivate.cs b/src/LogExpert/Controls/LogTabWindow/LogTabWindowPrivate.cs
index 3685a2be..8434da66 100644
--- a/src/LogExpert/Controls/LogTabWindow/LogTabWindowPrivate.cs
+++ b/src/LogExpert/Controls/LogTabWindow/LogTabWindowPrivate.cs
@@ -664,60 +664,30 @@ private void ProgressBarUpdateWorker(ProgressEventArgs e)
}
}
- private void StatusLineThreadFunc()
+ private void StatusLineEventWorker(StatusLineEventArgs e)
{
- int timeSum = 0;
- int waitTime = 30;
- while (!_shouldStop)
- {
- _statusLineEventWakeupHandle.WaitOne();
- _statusLineEventWakeupHandle.Reset();
- if (!_shouldStop)
+ if (e != null)
+ {
+ //_logger.logDebug("StatusLineEvent: text = " + e.StatusText);
+ labelStatus.Text = e.StatusText;
+ labelStatus.Size = TextRenderer.MeasureText(labelStatus.Text, labelStatus.Font);
+ labelLines.Text = $" {e.LineCount} lines";
+ labelLines.Size = TextRenderer.MeasureText(labelLines.Text, labelLines.Font);
+ labelSize.Text = Util.GetFileSizeAsText(e.FileSize);
+ labelSize.Size = TextRenderer.MeasureText(labelSize.Text, labelSize.Font);
+ labelCurrentLine.Text = $"Line: {e.CurrentLineNum}";
+ labelCurrentLine.Size = TextRenderer.MeasureText(labelCurrentLine.Text, labelCurrentLine.Font);
+ if (statusStrip.InvokeRequired)
{
- bool signaled = false;
- do
- {
- //this.statusLineEventHandle.Reset();
- signaled = _statusLineEventHandle.WaitOne(waitTime, true);
- timeSum += waitTime;
- } while (signaled && timeSum < 900 && !_shouldStop);
-
- if (!_shouldStop)
- {
- timeSum = 0;
- try
- {
- StatusLineEventArgs e;
- lock (_statusLineLock)
- {
- e = _lastStatusLineEvent.Clone();
- }
-
- BeginInvoke(StatusLineEventWorker, e);
- }
- catch (ObjectDisposedException)
- {
- //TODO needs to be handled or removed
- }
- }
+ statusStrip.BeginInvoke(new MethodInvoker(delegate { statusStrip.Refresh(); }));
+ }
+ else
+ {
+ statusStrip.Refresh();
}
}
}
- private void StatusLineEventWorker(StatusLineEventArgs e)
- {
- //_logger.logDebug("StatusLineEvent: text = " + e.StatusText);
- labelStatus.Text = e.StatusText;
- labelStatus.Size = TextRenderer.MeasureText(labelStatus.Text, labelStatus.Font);
- labelLines.Text = $" {e.LineCount} lines";
- labelLines.Size = TextRenderer.MeasureText(labelLines.Text, labelLines.Font);
- labelSize.Text = Util.GetFileSizeAsText(e.FileSize);
- labelSize.Size = TextRenderer.MeasureText(labelSize.Text, labelSize.Font);
- labelCurrentLine.Text = $"Line: {e.CurrentLineNum}";
- labelCurrentLine.Size = TextRenderer.MeasureText(labelCurrentLine.Text, labelCurrentLine.Font);
- statusStrip.Refresh();
- }
-
// tailState: 0,1,2 = on/off/off by Trigger
// syncMode: 0 = normal (no), 1 = time synced
private Icon CreateLedIcon(int level, bool dirty, int tailState, int syncMode)
diff --git a/src/LogExpert/Controls/LogWindow/LogWindow.cs b/src/LogExpert/Controls/LogWindow/LogWindow.cs
index 86bd50ec..0d47e5e6 100644
--- a/src/LogExpert/Controls/LogWindow/LogWindow.cs
+++ b/src/LogExpert/Controls/LogWindow/LogWindow.cs
@@ -68,10 +68,8 @@ internal partial class LogWindow : DockContent, ILogPaintContext, ILogView
private readonly ProgressEventArgs _progressEventArgs = new();
private readonly object _reloadLock = new();
private readonly Image _searchButtonImage;
- private readonly DelayedTrigger _selectionChangedTrigger = new(200);
private readonly StatusLineEventArgs _statusEventArgs = new();
- private readonly DelayedTrigger _statusLineTrigger = new(200);
private readonly object _tempHighlightEntryListLock = new();
private readonly Task _timeShiftSyncTask;
@@ -262,9 +260,6 @@ public LogWindow(LogTabWindow.LogTabWindow parent, string fileName, bool isTempF
ResumeLayout();
- _statusLineTrigger.Signal += OnStatusLineTriggerSignal;
- _selectionChangedTrigger.Signal += OnSelectionChangedTriggerSignal;
-
ChangeTheme(Controls);
}
diff --git a/src/LogExpert/Controls/LogWindow/LogWindowEventHandlers.cs b/src/LogExpert/Controls/LogWindow/LogWindowEventHandlers.cs
index 9704e978..d796b52a 100644
--- a/src/LogExpert/Controls/LogWindow/LogWindowEventHandlers.cs
+++ b/src/LogExpert/Controls/LogWindow/LogWindowEventHandlers.cs
@@ -1553,11 +1553,6 @@ private void OnMarkFilterHitsInLogViewToolStripMenuItemClick(object sender, Even
AddSearchHitHighlightEntry(p);
}
- private void OnStatusLineTriggerSignal(object sender, EventArgs e)
- {
- OnStatusLine(_statusEventArgs);
- }
-
private void OnColumnComboBoxSelectionChangeCommitted(object sender, EventArgs e)
{
SelectColumn();
diff --git a/src/LogExpert/Controls/LogWindow/LogWindowPrivate.cs b/src/LogExpert/Controls/LogWindow/LogWindowPrivate.cs
index 00e8bc5d..1d237040 100644
--- a/src/LogExpert/Controls/LogWindow/LogWindowPrivate.cs
+++ b/src/LogExpert/Controls/LogWindow/LogWindowPrivate.cs
@@ -2578,8 +2578,6 @@ private void UpdateSelectionDisplay()
{
return;
}
-
- _selectionChangedTrigger.Trigger();
}
private void UpdateFilterHistoryFromSettings()
@@ -2628,8 +2626,7 @@ private void SendProgressBarUpdate()
private void SendStatusLineUpdate()
{
- //OnStatusLine(this.statusEventArgs);
- _statusLineTrigger.Trigger();
+ OnStatusLine(_statusEventArgs);
}
private void ShowAdvancedFilterPanel(bool show)
diff --git a/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs b/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs
index e09d4471..b07a20f4 100644
--- a/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs
+++ b/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs
@@ -268,9 +268,6 @@ public void CloseLogWindow()
StopTimespreadThread();
StopTimestampSyncThread();
StopLogEventWorkerThread();
- _statusLineTrigger.Stop();
- _selectionChangedTrigger.Stop();
- //StopFilterUpdateWorkerThread();
_shouldCancel = true;
if (_logFileReader != null)