diff options
| author | Claus Vium <cvium@users.noreply.github.com> | 2024-03-18 20:55:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-18 13:55:18 -0600 |
| commit | eae031ae5acf948fbc303eb589b469953179f2ed (patch) | |
| tree | 1748a92da7286e404168e219801ae6c1a8756027 /Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs | |
| parent | 1271e60532aeea3821753d52e3b909725aa53f40 (diff) | |
refactor: use Channels as queueing mechanism for periodic websocket messages (#11092)
Diffstat (limited to 'Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs')
| -rw-r--r-- | Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs b/Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs index 37c108d5a..dd9286210 100644 --- a/Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs +++ b/Jellyfin.Api/WebSocketListeners/ScheduledTasksWebSocketListener.cs @@ -20,6 +20,8 @@ public class ScheduledTasksWebSocketListener : BasePeriodicWebSocketListener<IEn /// <value>The task manager.</value> private readonly ITaskManager _taskManager; + private bool _disposed; + /// <summary> /// Initializes a new instance of the <see cref="ScheduledTasksWebSocketListener"/> class. /// </summary> @@ -56,31 +58,32 @@ public class ScheduledTasksWebSocketListener : BasePeriodicWebSocketListener<IEn } /// <inheritdoc /> - protected override void Dispose(bool dispose) + protected override async ValueTask DisposeAsyncCore() { - if (dispose) + if (!_disposed) { _taskManager.TaskExecuting -= OnTaskExecuting; _taskManager.TaskCompleted -= OnTaskCompleted; + _disposed = true; } - base.Dispose(dispose); + await base.DisposeAsyncCore().ConfigureAwait(false); } - private async void OnTaskCompleted(object? sender, TaskCompletionEventArgs e) + private void OnTaskCompleted(object? sender, TaskCompletionEventArgs e) { e.Task.TaskProgress -= OnTaskProgress; - await SendData(true).ConfigureAwait(false); + SendData(true); } - private async void OnTaskExecuting(object? sender, GenericEventArgs<IScheduledTaskWorker> e) + private void OnTaskExecuting(object? sender, GenericEventArgs<IScheduledTaskWorker> e) { - await SendData(true).ConfigureAwait(false); + SendData(true); e.Argument.TaskProgress += OnTaskProgress; } - private async void OnTaskProgress(object? sender, GenericEventArgs<double> e) + private void OnTaskProgress(object? sender, GenericEventArgs<double> e) { - await SendData(false).ConfigureAwait(false); + SendData(false); } } |
