Example #1
0
		//-------------------------------------------------------------------------------------
		#region << Methods >>
		/// <summary>
		/// Создает асинхронную задачу и выполняет ее.
		/// </summary>
		/// <param name="taskName">Имя задачи.</param>
		/// <param name="dst">Объект, обрабатывающий уведомления о завершении задачи.</param>
		/// <param name="workMethod">Рабочий метод задачи.</param>
		/// <param name="tag">Дополнительная информацияю</param>
		/// <returns>Объект асинхронной задачи.</returns>
		public static AsyncTask Run(string taskName, IAsyncTaskDoneHandler dst, Func<object> workMethod, object tag = null)
		{
			AsyncTask task = new AsyncTask(taskName, dst) { WorkMethod = workMethod, Tag = tag };
			Run(task);
			return task;
		}
Example #2
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Инициализирующий конструктор.
		/// </summary>
		public AsyncTask(string taskName, IAsyncTaskDoneHandler dst, Func<object> workMethod, object tag)
		{
			this.dst = dst;
			this.name = taskName;
			this.workMethod = workMethod;
			this.tag = tag;
		}
Example #3
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Прерывает все задачи для указанного объекта уведомления.
		/// </summary>
		/// <param name="dest">Объект, обрабатывающий уведомления о завершении задачи.</param>
		public static void AbortTasks(IAsyncTaskDoneHandler dest)
		{
			List<AsyncTask> toDel = new List<AsyncTask>();
			lock (tasks)
			{
				foreach (AsyncTask at in tasks)
					if (at.TaskDoneHandler != null && at.TaskDoneHandler.Equals(dest))
						toDel.Add(at);
				foreach (AsyncTask at in toDel)
					at.thread.Abort();
			}
		}
Example #4
0
		//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		//-------------------------------------------------------------------------------------
		#region << Constructors >>
		/// <summary>
		/// Инициализирующий конструктор.
		/// </summary>
		public AsyncTask(string taskName, IAsyncTaskDoneHandler dst)
		{
			this.dst = dst;
			this.name = taskName;
		}
Example #5
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Определяет, выполняется ли хотя бы одна задача для указанного объекта.
		/// </summary>
		/// <param name="dest">Объект, обрабатывающий уведомления о завершении задачи.</param>
		/// <returns></returns>
		public static bool ContainsTask(IAsyncTaskDoneHandler dest)
		{
			lock (tasks)
				foreach (AsyncTask t in tasks)
					if (t.TaskDoneHandler.Equals(dest))
						return true;
			return false;
		}