public void SortListTest() { var a = new PriceProcessItem(true, 1, 1, 1, "test.txt", null); a.FileTime = DateTime.Now.AddHours(-1); PriceItemList.AddItem(a); var b = new PriceProcessItem(true, 1, 1, 1, "test.txt", null); b.FileTime = DateTime.Now; PriceItemList.AddItem(b); PriceProcessItem c = PriceItemList.GetLastestDownloaded(1); Assert.AreEqual(c, b, "Последний добавленный прайс-лист выбран некорреткно."); }
/// <summary> /// Удаляем дублирующиеся прайс-лист: переподложенные и два раза скаченные /// </summary> protected void DeleteDoubleItems() { int i = PriceItemList.list.Count - 1; while (i > -1) { var item = PriceItemList.list[i]; var downloadedItem = PriceItemList.GetLastestDownloaded(item.PriceItemId); if (downloadedItem == null || item == downloadedItem) { //если нет скаченных прайс-листов, то элемент оставляем i--; } else { //ищем элемент в рабочих нитках var thread = FindByProcessItem(item); if (thread != null) { //если элемент найден, то останавливаем нитку, файл будет удалять нитка при останове _logger.InfoFormat("Останавливаем нитку из-за дублирующего прайс-листа {0}", thread.TID); thread.AbortThread(); _logger.InfoFormat("Останов нитки успешно вызван {0}", thread.TID); } else { //если нет нитки на формализацию, то просто удаляем файл из папки try { global::Common.Tools.FileHelper.FileDelete(item.FilePath); } catch (Exception ex) { _logger.ErrorFormat("Не получилось удалить дублирующий файл {0}\r\n{1}", item.FilePath, ex); } } ///Из очереди на обработку файл элемент удаляется сразу, а если была рабочая нитка, ///то она удаляется в ProcessThreads, когда остановиться или ее останов принудительно прервут по таймауту PriceItemList.list.Remove(item); i--; } } }