Beispiel #1
0
        public void AssignTask(Worker processor)
        {
            Task task = HighestPriorityTask(processor);

            if (task != null && task.Equals(processor.task))
            {
                return;
            }

            if (task == null)
            {
                task = processor.GetDefaultTask(this);
            }

            if (processor.task != null)
            {
                processor.task.RemoveWorker(processor);
                processor.StopTask();
            }

            processor.task = task;
            processor.BeginTask(task);
            task.AddWorker(processor);
        }