问题描述
当使用完成端口时,可以使用socket的acceptasync,sendasync,recvasync,按文档所说,返回false就表示成功完成了,返回true表示要等待异步操作完成,但反编译其实现代码时发现,返回值生成如下boolflag;if(socketError!=SocketError.Success&&socketError!=SocketError.IOPending){e.FinishOperationSyncFailure(socketError,bytesTransferred,SocketFlags.None);flag=false;}else{flag=true;}明显是出了错误返回false,没有出错返回true,为保和文档描述的不一致?另外SocketAsyncEventArgs的completed事件一直找不到是哪里触发的请高手指点
解决方案
解决方案二:
文档描述确实有歧义,但是返回true也可能会出错。
解决方案三:
返回true的情况下,在操作完成之后会触发Completed。
解决方案四:
异步操作就去注册一下。比如人家说异步地“买麦当劳外卖”,那么这个意思就是说你告诉对方了、这就算是订餐成功了(等它备好餐,会另外通知你来取)。你不能认为对方给你餐才算成功。
解决方案五:
recvasync返回成功,就是说它"知道"了,而以。看来你还是满脑子同步顺序操作的概念,还没有理解异步操作和并发操作的概念。
解决方案六:
档描述确实有歧义,但是返回true也可能会出错。
解决方案七:
这个文档完全没有问题。返回false的时候就是说你的操作立刻失败了,不用等completed事件了。可以去检查参数参数e,通常的情况下能找到错误的信息。
时间: 2024-10-02 20:44:36