rework throttle

reuse throttle mechanism for catching global keys
This commit is contained in:
Oleksandr Bezdieniezhnykh
2024-08-14 02:02:26 +03:00
parent 468d28d9d8
commit 78776d37bd
6 changed files with 38 additions and 28 deletions
+9 -6
View File
@@ -150,16 +150,16 @@ public partial class MainWindow
Volume.ValueChanged += (_, newValue) => _mediator.Publish(new VolumeChangedEvent((int)newValue));
SizeChanged += (_, _) => SaveUserSettings();
LocationChanged += (_, _) => SaveUserSettings();
StateChanged += (_, _) => SaveUserSettings();
SizeChanged += async (_, _) => await SaveUserSettings();
LocationChanged += async (_, _) => await SaveUserSettings();
StateChanged += async (_, _) => await SaveUserSettings();
Editor.FormState = _formState;
Editor.Mediator = _mediator;
DgAnnotations.ItemsSource = _formState.AnnotationResults;
}
private void SaveUserSettings()
private async Task SaveUserSettings()
{
if (_suspendLayout)
return;
@@ -169,8 +169,11 @@ public partial class MainWindow
_config.WindowSize = new Size(Width, Height);
_config.WindowLocation = new Point(Left, Top);
_config.FullScreen = WindowState == WindowState.Maximized;
var saveConfigFn = () => _configRepository.Save(_config);
saveConfigFn.Debounce(TimeSpan.FromSeconds(5)).Invoke();
await ThrottleExt.Throttle(() =>
{
_configRepository.Save(_config);
return Task.CompletedTask;
}, TimeSpan.FromSeconds(5));
}
public void ShowCurrentAnnotations() => ShowTimeAnnotations(TimeSpan.FromMilliseconds(_mediaPlayer.Time));