Пример #1
0
 /// <summary>
 /// Informing the main form that execution is over, if it is necessarry to inform it.
 /// </summary>
 private void endExecution()
 {
     if (Form1.Instance.InvokeRequired == true)
     {
         EndExecution d = new EndExecution(endExecution);
         Form1.Instance.BeginInvoke(d);
     }
     else
     {
         Form1.Instance.ExecutionOver();
     }
 }
Пример #2
0
        public async System.Threading.Tasks.Task <ITaskResult> RunAsync()
        {
            ITaskResult result;

            BeginExecution?.Invoke(this, new TaskEventArgs($"Задача {Name} Priority:{Priority} Type:{Type} Начало выполнения"));

            //todo: выполнение задачи
            result = await System.Threading.Tasks.Task.Run(async() =>
            {
                bool lambdaResult;
                await System.Threading.Tasks.Task.Delay(1000);
                try
                {
                    lambdaResult = _contentFunc.Compile().Invoke(_argument1, _argument2);
                }
                catch
                {
                    return(TaskResult.CreateError(TaskError.Exception, "Ошибка"));;
                }

                if (lambdaResult)
                {
                    return(TaskResult.CreateSuccess("Успешно"));
                }
                else
                {
                    return(TaskResult.CreateError(TaskError.False, "Ошибка"));
                }
            });

            if (result.HasError())
            {
                EndExecution?.Invoke(this, new TaskEventArgs($"Задача {Name} Priority:{Priority} Type:{Type} Задача выполнена Result:{result.Message} {result.Error}\r\n"));
            }
            else
            {
                Error?.Invoke(this, new TaskEventArgs($"Задача {Name} Priority:{Priority} Type:{Type} Задача выполнена Result:{result.Message} {result.Error}\r\n"));
            }

            _result = result;
            return(result);
        }