예제 #1
0
        protected void UnloadDataLoop()
        {
            try
            {
                // выгружаем только если превышен порог
                if (Count < BeginUnloadCount)
                {
                    return;
                }

                // удаляем лишние
                bool hasUnloaded = false;
                int  doCount     = 0;
                int  count       = Count;
                while (count > StopUnloadCount)
                {
                    doCount++;
                    int tryUnloadCount = count - StopUnloadCount;
                    int unloaded       = UnloadOldData(tryUnloadCount);
                    if (unloaded > 0)
                    {
                        hasUnloaded = true;
                    }
                    count = Count;
                }

                // обновим статистику
                if (hasUnloaded)
                {
                    _generation++;
                }
            }
            catch (ThreadAbortException)
            {
            }
            catch (Exception exception)
            {
                ComponentControl.Log.Error("Ошибка UnloadDataLoop", exception);
                ComponentControl.AddApplicationError("Ошибка UnloadDataLoop", exception);
            }
        }
예제 #2
0
 /// <summary>
 /// Сохраняет изменения в бесконечном цикле пока есть хоть 1 изменение
 /// </summary>
 protected void SaveChangesLoop()
 {
     try
     {
         while (true)
         {
             int count = SaveChanges();
             if (count == 0)
             {
                 return;
             }
         }
     }
     catch (ThreadAbortException)
     {
     }
     catch (Exception exception)
     {
         _lastSaveException = new ExceptionTempInfo(exception);
         ComponentControl.Log.Error("Ошибка SaveChangesLoop", exception);
         ComponentControl.AddApplicationError(exception);
     }
 }