私のコードは、メッセージ キューからトランザクション メッセージを読み取ります。コードは何千ものメッセージを実行しましたが、以前に読み取ったメッセージの 1 つをコミットすると、突然例外がスローされました。コミットは、メッセージを読んでいるスレッドとは別のスレッドで実行されますが、これは私の意見では問題にならないはずです。トランザクションに関するドキュメントでは、コミット メソッドやアボート メソッドをオブジェクトと同期するように指示されていません。この例外はモニターの使用に関連していますが、私はモニターを使用していません。基礎となるフレームワーク コードが使用している可能性がありますが、それは私の制御範囲外です。
メッセージキューで時限読み取りを行ったときに、この例外が時々発生していました。コードを書き直して、最初に非同期ピークを使用して、読み取るデータがあるかどうかを確認するようにしました。このようにして、発生する例外を回避しました。しかし今はまた戻ってきました。
この例外を回避する方法を教えてください。または、これは 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);