改了一亿个东西,修了一亿个 BUG

This commit is contained in:
2021-10-19 17:42:18 +02:00
parent 5b907309e0
commit 888ddce4ef
40 changed files with 1870 additions and 1715 deletions

30
Utils/TaskQueue.cs Normal file
View File

@@ -0,0 +1,30 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Threading;
namespace AnotherReplayReader.Utils
{
internal class TaskQueue
{
private readonly object _lock = new();
private readonly Dispatcher _dispatcher;
private Task _current = Task.CompletedTask;
public TaskQueue(Dispatcher dispatcher)
{
_dispatcher = dispatcher;
}
public Task Enqueue(Func<Task> getTask, CancellationToken cancelToken)
{
using var locker = new Lock(_lock);
_current = _current.ContinueWith(async t =>
{
await _dispatcher.InvokeAsync(getTask, DispatcherPriority.Background, cancelToken);
}, cancelToken);
return _current.IgnoreCancel();
}
}
}