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