Esempio n. 1
0
        private void slaveTask_TaskStopped(object sender, EventArgs <Guid> e)
        {
            SlaveTask slaveTask;

            slaveTasksLocker.EnterUpgradeableReadLock();
            try {
                slaveTask = slaveTasks[e.Value].Task;
                RemoveSlaveTask(e.Value, slaveTask);
            }
            finally { slaveTasksLocker.ExitUpgradeableReadLock(); }

            TaskData taskData = null;

            try {
                taskData = slaveTask.GetTaskData();
                SlaveStatusInfo.IncrementTasksFinished();
                OnTaskStopped(slaveTask, taskData);
            }
            catch (Exception ex) {
                RemoveSlaveTask(e.Value, slaveTask);
                SlaveStatusInfo.IncrementTasksFailed();
                OnTaskFailed(slaveTask, taskData, ex);
            }
        }