Exemplo n.º 1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////#############                           Поиск заданий по 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();
        }
Exemplo n.º 2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /////#############                                       Запуск задания по 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;
        }