private void ReadAsync(object sender, DoWorkEventArgs e)
{
while (true)
{
try
{
if (readWorker.CancellationPending)
{
e.Cancel = true;
break;
}
lock (removalMutex)
{
for (int i = 0; i < Players.Count; i++)
{
if (!((TcpClient)Players[i].SocketEndpoint).Connected)
{
Disconnect(Players[i]);
Thread.Sleep(ThreadSpeed);
continue;
}
if (((TcpClient)Players[i].SocketEndpoint).GetStream().DataAvailable)
{
do
{
readBuffer = ReadBuffer(((TcpClient)Players[i].SocketEndpoint).GetStream());
if (readBuffer != null && readBuffer.Size > 0)
StreamReceived(Players[i], readBuffer);
} while (backBuffer.Size > 0);
}
}
}
Thread.Sleep(ThreadSpeed);
}
catch (Exception ex)
{
UnityEngine.Debug.LogException(ex);
}
}
}