Example #1
0
 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();
     }
 }