Ejemplo n.º 1
0
 public TaskWatcher(ITask task, EventLoop eventLoop)
 {
     Task       = task;
     _eventLoop = eventLoop;
     _incompleteDependencies.AddRange(task.Dependencies);
     foreach (var dep in _incompleteDependencies)
     {
         dep.StateChanged += DependencyStateChangedHandler;
     }
     IsReady                      = _incompleteDependencies.Count == 0;
     task.StateChanged           += TaskStateChangedHandler;
     task.ProgressChanged        += TaskProgressChangedHandler;
     task.ProgressMessageChanged += TaskProgressMessageChangeHandler;
     IsObsolete                   = task.State != TaskState.Obsolete;
     HasEnded                     = task.State == TaskState.Succeeded ||
                                    task.State == TaskState.Failed ||
                                    Task.State == TaskState.Canceled;
 }
Ejemplo n.º 2
0
        public WorkingLine(EventLoop eventLoop, string queueTag, IWorkerFactory factory, int worker = 1, ThreadPriority threadPriority = ThreadPriority.Normal)
        {
            QueueTag       = queueTag ?? throw new ArgumentNullException(nameof(queueTag));
            WorkerFactory  = factory ?? throw new ArgumentNullException(nameof(factory));
            Worker         = Math.Max(1, Math.Min(MAX_WORKER, worker));
            ThreadPriority = threadPriority;
            _eventLoop     = eventLoop;

            for (int i = 0; i < worker; i++)
            {
                var thread = new WorkerThread(_queue, factory.Create(), $"{queueTag}_{i:0000}");
                _threadBusy[thread] = false;
                _threads.Add(thread);
                thread.BusyChanged  += WorkerThreadBusyChangedHandler;
                thread.TaskRejected += WorkerThreadTaskRejectedHandler;
                thread.WorkerError  += WorkerThreadErrorHandler;
                thread.TaskBegin    += WorkerThreadTaskBeginHandler;
                thread.TaskEnd      += WorkerThreadTaskEndHandler;
            }
        }