我遇到了一個非常煩人的問題。我正在嘗試編寫一個簡單的WinForm應用程序來顯示Oracle Coherence緩存的內容。當調用CacheFactory.GetCache時拋出LockRecursionException
出於某種原因,一個LockRecursionException
當我打電話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。相同的代碼在單獨的(更復雜的項目)中工作正常,所以我有點不確定發生了什麼問題。
太棒了 - 謝謝。 –