Run manual refresh asynchronously to keep UI responsive

This commit is contained in:
Meik
2026-03-05 11:38:38 +01:00
parent ee165ce0f6
commit 5af89a34f0

View File

@@ -67,6 +67,7 @@ namespace C4IT_CustomerPanel
private DispatcherTimer _regularTimer;
private DispatcherTimer _checkServerConnectionTimer;
private bool _initialTimerInvocationDone = false;
private bool _manualRefreshInProgress = false;
private TimeSpan _lastTicketInterval;
private TimeSpan _lastAdHocInterval;
private TimeSpan _lastRegularInterval;
@@ -1461,11 +1462,45 @@ namespace C4IT_CustomerPanel
}
}
private void OnRefreshClicked(object sender, MouseButtonEventArgs e)
private async Task TriggerManualRefreshAsync()
{
OnReloadTimerElapsed(sender, e);
OnAdHocTimerElapsed(sender, e);
OnRegularTimerElapsed(sender, e);
if (_manualRefreshInProgress)
return;
var CM = MethodBase.GetCurrentMethod();
LogMethodBegin(CM);
_manualRefreshInProgress = true;
try
{
bool force = ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt);
if (RefreshIcon != null)
RefreshIcon.IsEnabled = false;
await Task.WhenAll(
OnReloadTimerElapsedAsync(force),
OnAnnoncementTimerReloadAsync(announcementType.Adhoc),
OnAnnoncementTimerReloadAsync(announcementType.Regular));
SetAppearance(false);
}
catch (Exception E)
{
LogException(E);
}
finally
{
if (RefreshIcon != null)
RefreshIcon.IsEnabled = true;
_manualRefreshInProgress = false;
LogMethodEnd(CM);
}
}
private async void OnRefreshClicked(object sender, MouseButtonEventArgs e)
{
await TriggerManualRefreshAsync();
}
private void OnCloseClicked(object sender, MouseButtonEventArgs e)
@@ -1487,9 +1522,9 @@ namespace C4IT_CustomerPanel
HideMainForm();
}
private void OnRefreshButtonClick(object sender, RoutedEventArgs e)
private async void OnRefreshButtonClick(object sender, RoutedEventArgs e)
{
OnRefreshClicked(sender, null);
await TriggerManualRefreshAsync();
}
private void OnMinimizeButtonClick(object sender, RoutedEventArgs e)