/// <summary> /// Записать срез в таблицу архивных (минутных или часовых) срезов /// </summary> private void WriteArcSrez(SrezTable srezTable, SrezAdapter srezAdapter, DateTime srezDT, AvgData[] avgData) { string fileName = ""; try { // заполнение таблицы срезов, если файл изменился fileName = srezAdapter.FileName; SrezTableCache.FillSrezTable(srezTable, srezAdapter); // добавление копии среза в таблицу SrezTable.Srez newSrez = srezTable.AddSrezCopy(curSrez, srezDT); // запись усредняемых данных bool changed = false; foreach (int cnlInd in avgCnlInds) { AvgData ad = avgData[cnlInd]; if (ad.Cnt > 0) { newSrez.CnlData[cnlInd] = new SrezTableLight.CnlData(ad.Sum / ad.Cnt, BaseValues.CnlStatuses.Defined); avgData[cnlInd] = new AvgData() { Sum = 0.0, Cnt = 0 }; // сброс changed = true; } } // вычисление дорасчётных каналов, если добавленый срез изменился if (changed) CalcDRCnls(drCnls, newSrez, false); // запись изменений таблицы срезов srezAdapter.Update(srezTable); srezTable.FileModTime = File.GetLastWriteTime(fileName); if (Settings.DetailedLog) AppLog.WriteAction(string.Format(Localization.UseRussian ? "Запись среза в таблицу {0} завершена" : "Writing snapshot in the {0} table is completed", srezTable.Descr), Log.ActTypes.Action); } catch (Exception ex) { string fileNameStr = string.IsNullOrEmpty(fileName) ? "" : Environment.NewLine + (Localization.UseRussian ? "Имя файла: " : "Filename: ") + fileName; AppLog.WriteAction(string.Format(Localization.UseRussian ? "Ошибка при записи среза в таблицу архивных срезов: {0}{1}" : "Error writing snapshot in the archive data table: {0}{1}", ex.Message, fileNameStr), Log.ActTypes.Exception); } }