예제 #1
0
 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);
         }
     }
 }
예제 #2
0
 protected virtual void OnTaskError(TaskQueueErrorEventArgs eventargs)
 {
     TaskError?.Invoke(eventargs);
 }