示例#1
0
		/// <summary>
		/// Принудительно мнгновенно запускает задачу, находящуюся в планировщике
		/// </summary>
		/// <param name="task">Запускаемая задача.</param>
		public void RunTask(SchedulerTask task)
		{
			lock(_tasks.SyncRoot)
			{
				if(_tasks.Contains(task) == false)
					throw new PulsarException("Планировщик не содержит задачу [{0}]!", task);
				lock(task)
				{
					task.State = SchedulerTaskState.Waiting;
					RunTaskAction(task);
				}
			}
		}
示例#2
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Добавляет задачу в планировщик
		/// </summary>
		/// <param name="task">Добавляемая задача.</param>
		public void AddTask(SchedulerTask task)
		{
			lock(_tasks.SyncRoot)
			{
				_tasks.Add(task);
				lock(task)
				{
					task.State = SchedulerTaskState.Waiting;
					if(task.Priority == SchedulerTaskPriority.Critical)
						RunTaskAction(task);
				}
			}
		}
示例#3
0
		/// <summary>
		/// Удаляет задачу
		/// </summary>
		/// <param name="task">Удаляемая задача.</param>
		public void RemoveTask(SchedulerTask task)
		{
			lock(_tasks.SyncRoot)
				_tasks.Remove(task);
		}
示例#4
0
		/// <summary>
		/// Запускает задачу на выполнение. НЕ ПОТОКОБЕЗОПАСНЫЙ!
		/// </summary>
		/// <param name="task"></param>
		protected void RunTaskAction(SchedulerTask task)
		{
			lock(task.SyncRoot)
				task.State = SchedulerTaskState.Running;
			Pulsar.PulsarThreadPool.Run(TaskWork, task);
			_runned++;
		}