//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////############# Поиск заданий по ID номеру со всеми его зависимостями #############///// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public static IndexALL FindIndex(object ID) { try { int id = GetNumber(ID); //Получаем ID базы данных if (id != -1) { IndexALL all = new IndexALL(); //Находим индеск ячейки в MAIN и Task задания all.MainIndex = new List<Engine.InfoClass.job.Main>(db.job.main).FindIndex(item => (item.id == id)); all.JobTaskIndex = db.JobTask.FindIndex(item => (item.id == id)); //Определяем тип задания и удаляем все зависимости all.Type = db.job.main[all.MainIndex].Type; //Находим индекс задания switch (all.Type) { case Engine.InfoClass.job.EnumType.HashTag: { //Находим индекс HashTag задания all.JobIndex = new List<Engine.InfoClass.job.hashTag>(db.job.HashTag).FindIndex(item => (item.id == id)); break; } } //Возвращаем результат ID = null; return all; } } catch (Exception e) { MessageBOX.Show(e.Message.ToString(), e.StackTrace.ToString()); } //Чистим ресурсы и возвращаем результаты ID = null; return new IndexALL(); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////############# Запуск задания по ID #############///// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public static void StartJob(IndexALL indexALL) { var work = db.JobTask[indexALL.JobTaskIndex]; if (work.job.IsCompleted || work.job.IsCanceled || work.job.IsFaulted) { //Удаляем старое задание db.JobTask.Remove(work); //Добовляем новое задание CancellationTokenSource _cts = new CancellationTokenSource(); db.JobTask.Add(new Work() { id = db.job.main[indexALL.MainIndex].id, cts = _cts, job = new Engine.Class.TaskWork.HashTag().get(db.job.main[indexALL.MainIndex], db.job.HashTag[indexALL.JobIndex], _cts.Token) }); _cts = null; db.JobTask[db.JobTask.Count - 1].job.Start(); } else { work.job.Start(); } work = null; indexALL = null; }