У меня есть Socket Client, и мне было интересно, как правильно читать входящие данные из него.
В настоящее время я использую следующую функцию:
private void _ReadResponsePackets()
{
while (_socket.Connected)
{
try
{
byte[] bytes = new byte[1500];
_socket.Receive(bytes);
if (bytes.Length > 0)
LoginserverPackets.Enqueue(bytes);
}
catch (Exception ex)
{
_log.Write(ErrorType.ERROR, "[LOGINCLIENT] " + ex.ToString(), true);
}
}
}
Этовызывается его собственным потоком:
Thread _readDataThread = new Thread(_ReadResponsePackets);
_readDataThread.Start();
Как вы видите, я просто читаю и собираю пакеты, полученные в списке очередей, для дальнейшей их обработки, но мой вопрос здесь:
- Должен ли я использовать Thread.Sleep в моей функции чтения или оставить его как есть?
- Повлияет ли это больше на производительность или использование памяти, как есть, или на использование Thread.Sleep?
Есть ли другие проблемы?