我的代码从消息队列中读取事务性消息。该代码已经运行了成千上万条消息,突然间,当我提交之前读取的一条消息时,会引发异常。提交是在与读取消息的线程不同的线程上执行的,在我看来这应该不是问题。关于事务的文档没有告诉我将提交或中止方法与某个对象同步。此异常与使用监视器有关,但我没有使用监视器,底层框架代码可能会这样做,但这不在我的控制范围内。
当我对消息队列进行定时读取时,我曾经偶尔会遇到此异常,我已经重写了代码,以便它首先使用异步 peek 来检查是否有要读取的数据。这样我就绕过了发生的异常。但现在又回来了。
请帮助我如何避免此异常,或者这是 c# 框架底层代码中的错误?
问候马丁
// Part of thread code that reads transaction
transaction = new MessageQueueTransaction();
transaction.Begin();
message = _ItfSureStoreInstance.MQSet.MQ_Retry.mqueue.Receive(transaction);
// We have data received
DataImplementation<TMessage> dataRxd = new DataImplementation<TMessage>(this,message,transaction,true);