public bool RequestsIsDoubled(int accountId, int reqId) { try { locker.AcquireReaderLock(LockTimeout); } catch (ApplicationException) { Logger.Error("RequestIsDoubled - read timeout"); return(true); } try { ThreadSafeArray arr; accountRequests.TryGetValue(accountId, out arr); if (arr != null) { return(arr.ContainsValue(reqId)); } // запросы от акаунта еще не поступали - создать запись try { locker.UpgradeToWriterLock(LockTimeout); } catch (ApplicationException) { Logger.Error("RequestIsDoubled - write timeout"); return(true); } arr = new ThreadSafeArray(requestsCount, reqId); accountRequests.Add(accountId, arr); return(false); } finally { locker.ReleaseLock(); } }
public bool RequestsIsDoubled(int accountId, int reqId) { try { locker.AcquireReaderLock(LockTimeout); } catch (ApplicationException) { Logger.Error("RequestIsDoubled - read timeout"); return true; } try { ThreadSafeArray arr; accountRequests.TryGetValue(accountId, out arr); if (arr != null) return arr.ContainsValue(reqId); // запросы от акаунта еще не поступали - создать запись try { locker.UpgradeToWriterLock(LockTimeout); } catch (ApplicationException) { Logger.Error("RequestIsDoubled - write timeout"); return true; } arr = new ThreadSafeArray(requestsCount, reqId); accountRequests.Add(accountId, arr); return false; } finally { locker.ReleaseLock(); } }