diff --git a/CryptoExchange.Net/ExtensionMethods.cs b/CryptoExchange.Net/ExtensionMethods.cs index 424d70c..c015933 100644 --- a/CryptoExchange.Net/ExtensionMethods.cs +++ b/CryptoExchange.Net/ExtensionMethods.cs @@ -223,6 +223,16 @@ namespace CryptoExchange.Net } } + /// + /// Wait one async + /// + /// + /// + public static Task WaitOneAsync(this WaitHandle handle) + { + return handle.WaitOneAsync(-1, CancellationToken.None); + } + /// /// Wait one async /// diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs index 29f8d11..2ab4723 100644 --- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs +++ b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs @@ -352,7 +352,7 @@ namespace CryptoExchange.Net.Sockets if (_closing) break; - _sendEvent.WaitOne(); + await _sendEvent.WaitOneAsync().ConfigureAwait(false); if (_closing) break; @@ -365,7 +365,8 @@ namespace CryptoExchange.Net.Sockets DateTime? start = null; while (MessagesSentLastSecond() >= RatelimitPerSecond) { - start = DateTime.UtcNow; + if (start == null) + start = DateTime.UtcNow; await Task.Delay(10).ConfigureAwait(false); }