如果Socket.BeginReceive之后没有响应,如何处理AsyncCallback进行接收

时间:2019-04-26 17:55:46

标签: c# sockets

在启动过程中初始化服务器时,不会调用AsyncCallback之后的Socket.BeginReceive

mSocket.BeginReceive(mBuffer, 0, mBuffer.Length, SocketFlags.None, new AsyncCallback(onReceive), mSocket);
private void onReceive(IAsyncResult result)
{
    if (mSocket == null) return;
    Monitor.Enter(mLockObj);
    mSocket.EndReceive(result);
    //...                       

我需要创建一些超时逻辑,还是可以捕获和处理的异常情况?

1 个答案:

答案 0 :(得分:1)

由于AsyncCallback很好,async,它将一直等待无限期地接收,直到返回为止,因此不会出现“超时”异常。

this thread中探讨了一些选项,但是,要回答您的问题,您基本上必须实现自己的超时方法。