public virtual void ExecuteTask(ITask task) { try { task.TaskProgress += Task_TaskProgress; OnTaskStarting(task); task.Execute(); OnTaskCompleted(task); task.TaskProgress -= Task_TaskProgress; } catch (Exception e) { task.TaskProgress -= Task_TaskProgress; var eventArgs = new TaskQueueErrorEventArgs(task, e); OnTaskError(eventArgs); if (eventArgs.TaskQueueErrorResponse == TaskQueueErrorResponse.Retry) { RetryTask(task); } } }
protected virtual void OnTaskError(TaskQueueErrorEventArgs eventargs) { TaskError?.Invoke(eventargs); }