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

added locks to socket

This commit is contained in:
JKorf 2018-12-18 13:41:40 +01:00
parent 90dac4a0d6
commit 4b382ed480

View File

@ -115,7 +115,7 @@ namespace CryptoExchange.Net.Sockets
{ {
while (true) while (true)
{ {
if (socket == null || socket.State != WebSocketState.Open) if (socket?.State != WebSocketState.Open)
return; return;
if (DateTime.UtcNow - LastActionTime > Timeout) if (DateTime.UtcNow - LastActionTime > Timeout)
@ -164,17 +164,23 @@ namespace CryptoExchange.Net.Sockets
} }
public virtual void Reset() public virtual void Reset()
{
lock (socketLock)
{ {
socket.Dispose(); socket.Dispose();
socket = null; socket = null;
} }
}
public virtual void Send(string data) public virtual void Send(string data)
{ {
socket.Send(data); lock (socketLock)
socket?.Send(data);
} }
public virtual async Task<bool> Connect() public virtual async Task<bool> Connect()
{
lock (socketLock)
{ {
if (socket == null) if (socket == null)
{ {
@ -190,6 +196,7 @@ namespace CryptoExchange.Net.Sockets
socket.MessageReceived += (o, s) => Handle(messageHandlers, s.Message); socket.MessageReceived += (o, s) => Handle(messageHandlers, s.Message);
socket.DataReceived += (o, s) => HandleByteData(s.Data); socket.DataReceived += (o, s) => HandleByteData(s.Data);
} }
}
return await Task.Run(() => return await Task.Run(() =>
{ {