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); } }
/// <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); } }