/// <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(); } }
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); }