我的问题可能很荒谬,但我在网上找不到任何信息。
我的服务器不断读取从连接到它的客户端发送的数据,根据收到的数据,我执行某些操作。
我的问题是,如果我的操作时间很长,我是否需要创建一个新线程以便 BeginRecieve 不会被阻塞?如果没有,我需要做什么?
代码:
private void ReceiveCallback(IAsyncResult ar)
{
try
{
Socket current = (Socket)ar.AsyncState;
int received;
try
{
received = current.EndReceive(ar);
}
catch
{
return;
}
byte[] recBuf = new byte[received];
Array.Copy(buffer, recBuf, received);
var st = Helper.ByteToObject(recBuf);
if ((st is string s))
{
if (s == "Something")
{
//Long operating task, do i need to use a new thread?
}
}
current.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
}
catch
{
return;
}
}
翻阅古今
相关分类