1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-08 16:36:15 +00:00

Refactored use of AutoResetEvent to AsyncResetEvent in SymbolOrderBook

This commit is contained in:
Jkorf 2022-01-25 13:17:25 +01:00
parent 893d0c723d
commit 2ece04dd58

View File

@ -27,7 +27,7 @@ namespace CryptoExchange.Net.OrderBook
private bool _stopProcessing; private bool _stopProcessing;
private Task? _processTask; private Task? _processTask;
private readonly AutoResetEvent _queueEvent; private readonly AsyncResetEvent _queueEvent;
private readonly ConcurrentQueue<object> _processQueue; private readonly ConcurrentQueue<object> _processQueue;
private readonly bool _validateChecksum; private readonly bool _validateChecksum;
@ -205,7 +205,7 @@ namespace CryptoExchange.Net.OrderBook
Id = id; Id = id;
processBuffer = new List<ProcessBufferRangeSequenceEntry>(); processBuffer = new List<ProcessBufferRangeSequenceEntry>();
_processQueue = new ConcurrentQueue<object>(); _processQueue = new ConcurrentQueue<object>();
_queueEvent = new AutoResetEvent(false); _queueEvent = new AsyncResetEvent(false, true);
_validateChecksum = options.ChecksumValidationEnabled; _validateChecksum = options.ChecksumValidationEnabled;
Symbol = symbol; Symbol = symbol;
@ -541,11 +541,11 @@ namespace CryptoExchange.Net.OrderBook
Status = OrderBookStatus.Synced; Status = OrderBookStatus.Synced;
} }
private void ProcessQueue() private async Task ProcessQueue()
{ {
while (Status != OrderBookStatus.Disconnected) while (Status != OrderBookStatus.Disconnected)
{ {
_queueEvent.WaitOne(); await _queueEvent.WaitAsync().ConfigureAwait(false);
while (_processQueue.TryDequeue(out var item)) while (_processQueue.TryDequeue(out var item))
{ {