C# MessageQueue.EndReceive偶尔会引发NullReferenceException
我们正在使用C# MessageQueue.EndReceive偶尔会引发NullReferenceException,c#,.net,msmq,C#,.net,Msmq,我们正在使用MessageQueue.EndReceive从Windows服务中的本地MSMQ异步检索消息 有时,该方法会失败,并出现NullReferenceException 没有将此记录为可能的异常,快速查看源代码不会显示可能发生这种情况的位置;代码似乎验证了所有引用,并将抛出一个参数*Exception 在一篇知识库文章中,当您在依赖消息队列的客户机()上执行异步接收操作时,您会收到一条错误消息,该文章将此记录为.NET Framework 1.0 | 1.1错误,表明此错误已在后续版本
MessageQueue.EndReceive
从Windows服务中的本地MSMQ异步检索消息
有时,该方法会失败,并出现NullReferenceException
没有将此记录为可能的异常,快速查看源代码不会显示可能发生这种情况的位置;代码似乎验证了所有引用,并将抛出一个参数*Exception
在一篇知识库文章中,当您在依赖消息队列的客户机()上执行异步接收操作时,您会收到一条错误消息,该文章将此记录为.NET Framework 1.0 | 1.1错误,表明此错误已在后续版本中修复。我们不使用的游标也存在问题
所提供的解决方案没有直接关系,因为AsyncResult
看起来有效,并且建议的缓存似乎是多余的。相反,由于代码在启动后不修改连接的队列集,因此此选项看起来不合适
对此是否有记录在案的解决方案,或者原因是否已知,是否有现成的解决办法?总体信息是什么?您是否检查了IAsyncResult
是否如文章所示尚未收集?消息大小很小(~1k)。队列在任何时候都只有一个未完成的BeginReceive。我不认为这是原因,但会再次检查。IAsyncResult
是有效的,并且包含我们定义的有效的AsyncState
。我偶尔会看到类似的行为,套接字类型上的EndRecieve抛出空引用异常,IAsyncResult看起来有效(具有非空AsyncState)。