非常に厄介な問題にぶつかりました。Oracle Coherenceキャッシュの内容を表示する単純なWinFormアプリケーションを作成しようとしています。
を呼び出すと、何らかの理由で aLockRecursionException
がスローされますCacheFactory.GetCache("cacheName")
。
読み取りロックを保持したまま、書き込みロックを取得できない場合があります。このパターンは、デッドロックが発生しやすい傾向にあります。書き込みロックを取得する前に、読み取りロックが解除されていることを確認してください。アップグレードが必要な場合は、読み取りロックの代わりにアップグレード ロックを使用します。
スタック トレースは次のとおりです。
at System.Threading.ReaderWriterLockSlim.TryEnterWriteLockCore(Int32 millisecondsTimeout)
at System.Threading.ReaderWriterLockSlim.TryEnterWriteLock(Int32 millisecondsTimeout)
at Tangosol.Util.ThreadGateSlim.Close(Int64 millis) in c:\hudson\workspace\Coh-NET-3.7.1\dev\release.net\coherence-net-v3.7.1\src\Coherence\Util\ThreadGateSlim.cs:line 26
次のコードをフォーム コンストラクターとボタン クリック イベント ハンドラーに配置しましたが、それでも例外がスローされます。前に他に何も呼び出されていません:
using (var cache = CacheFactory.GetCache("cacheName"))
{
...get data from cache
}
誰もこれに遭遇したことがありますか?.Net 4.0 と Coherence 3.7.1.5 を使用しています。同じコードが別の (はるかに複雑なプロジェクト) で正常に機能するため、何が問題なのか少しわかりません。