fixed: temporary scheduler
This commit is contained in:
@@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Channels;
|
using System.Threading.Channels;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using NLog.LayoutRenderers.Wrappers;
|
||||||
|
|
||||||
namespace Ragon.Core;
|
namespace Ragon.Core;
|
||||||
|
|
||||||
@@ -9,13 +10,14 @@ public class WebSocketTaskScheduler: TaskScheduler
|
|||||||
{
|
{
|
||||||
private ChannelReader<Task> _reader;
|
private ChannelReader<Task> _reader;
|
||||||
private ChannelWriter<Task> _writer;
|
private ChannelWriter<Task> _writer;
|
||||||
private Channel<Task> _channel;
|
private Queue<Task> _pendingTasks;
|
||||||
|
|
||||||
public WebSocketTaskScheduler()
|
public WebSocketTaskScheduler()
|
||||||
{
|
{
|
||||||
_channel = Channel.CreateUnbounded<Task>();
|
var channel = Channel.CreateUnbounded<Task>();
|
||||||
_reader = _channel.Reader;
|
_pendingTasks = new Queue<Task>();
|
||||||
_writer = _channel.Writer;
|
_reader = channel.Reader;
|
||||||
|
_writer = channel.Writer;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IEnumerable<Task>? GetScheduledTasks()
|
protected override IEnumerable<Task>? GetScheduledTasks()
|
||||||
@@ -40,7 +42,10 @@ public class WebSocketTaskScheduler: TaskScheduler
|
|||||||
TryExecuteTask(task);
|
TryExecuteTask(task);
|
||||||
|
|
||||||
if (task.Status != TaskStatus.RanToCompletion)
|
if (task.Status != TaskStatus.RanToCompletion)
|
||||||
|
_pendingTasks.Enqueue(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (_pendingTasks.TryDequeue(out var task))
|
||||||
_writer.TryWrite(task);
|
_writer.TryWrite(task);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user