From 14ae5e8189b43ff3fd004db11f6156d5ecc26744 Mon Sep 17 00:00:00 2001 From: Edmand46 Date: Sat, 22 Oct 2022 22:58:15 +0400 Subject: [PATCH] fixed: temporary scheduler --- .../Server/Http/WebSocketTaskScheduler.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Ragon/Sources/Server/Http/WebSocketTaskScheduler.cs b/Ragon/Sources/Server/Http/WebSocketTaskScheduler.cs index 9a92db7..67d9708 100644 --- a/Ragon/Sources/Server/Http/WebSocketTaskScheduler.cs +++ b/Ragon/Sources/Server/Http/WebSocketTaskScheduler.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Threading.Channels; using System.Threading.Tasks; +using NLog.LayoutRenderers.Wrappers; namespace Ragon.Core; @@ -9,13 +10,14 @@ public class WebSocketTaskScheduler: TaskScheduler { private ChannelReader _reader; private ChannelWriter _writer; - private Channel _channel; - + private Queue _pendingTasks; + public WebSocketTaskScheduler() { - _channel = Channel.CreateUnbounded(); - _reader = _channel.Reader; - _writer = _channel.Writer; + var channel = Channel.CreateUnbounded(); + _pendingTasks = new Queue(); + _reader = channel.Reader; + _writer = channel.Writer; } protected override IEnumerable? GetScheduledTasks() @@ -40,7 +42,10 @@ public class WebSocketTaskScheduler: TaskScheduler TryExecuteTask(task); if (task.Status != TaskStatus.RanToCompletion) - _writer.TryWrite(task); + _pendingTasks.Enqueue(task); } + + while (_pendingTasks.TryDequeue(out var task)) + _writer.TryWrite(task); } } \ No newline at end of file