1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-09 00:46:19 +00:00

Merge pull request #72 from EricGarnier/master

Fix for issue #71
This commit is contained in:
Jan Korf 2020-12-21 13:06:28 +01:00 committed by GitHub
commit 76a0f6899f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -148,11 +148,23 @@ namespace CryptoExchange.Net.Sockets
}
var handledResponse = false;
foreach (var pendingRequest in pendingRequests.ToList())
PendingRequest[] requests;
lock(pendingRequests)
{
requests = pendingRequests.ToArray();
}
foreach (var pendingRequest in requests)
{
if (pendingRequest.Check(tokenData))
{
lock (pendingRequests)
{
pendingRequests.Remove(pendingRequest);
}
if (pendingRequest.Result == null)
{
continue; // A previous timeout.
}
if (!socketClient.ContinueOnQueryResponse)
return;
handledResponse = true;
@ -233,7 +245,10 @@ namespace CryptoExchange.Net.Sockets
public virtual Task SendAndWait<T>(T obj, TimeSpan timeout, Func<JToken, bool> handler)
{
var pending = new PendingRequest(handler, timeout);
lock (pendingRequests)
{
pendingRequests.Add(pending);
}
Send(obj);
return pending.Event.WaitOneAsync(timeout);
}