我正在查看一些使用ar = udpClient.BeginReceive(callback, userObject)
的代码,其中callback
然后调用EndReceive
,并为同一BeginReceive
调用新callback
。
这个方案会以意想不到的方式失败吗?现在没有ar.IsCompleted
或ar.CompletedSynchronously
的检查,所以我会添加这些,尽管GitHub搜索建议大多数人不这样做。
我担心在某些错误情况下可能无法调用callback
而我的应用程序不会知道接收链出现故障。
备选方案是udpClient.Receive
上具有合理超时的专用线程,但由于线程成本,我宁愿不这样做。