Создание и запуск задачи
Параллелизм задач
Введение
Параллелизм задач (task parallelism) - это низкоуровневый подход к распараллеливанию задач с помощью PFX. Классы этого уровня определены в пространстве имен System.Threading.Tasks (Табл. 7.1).
Таблица 7.1. Основные классы пространства имен System.Threading.Task | |
Класс | Описание |
Task | Представляет асинхронную операцию. |
Task <TResult> | Представляет асинхронную операцию, которая возвращает значение. |
TaskScheduler | Объект, обрабатывающий низкоуровневую постановку задач в очередь на потоки. |
TaskFactory | Для создания объекта Task. |
TaskFactory <TResult> | Для создания объекта Task, с возвращаемым значением. |
Создание и запуск задачи
Как уже писалось в "Введение в асинхронные задачи" задачи можно создавать различными способами. Один из таких способов - это использование лямда-выражения и метода Task.Factory.StartNew():
Task.Factory.StartNew (() => Console.WriteLine ("Hello World!"));
увеличить изображение
Рис. 7.1.Результат выполнения программы с использованием класса Task
Аналогично, можно было вывести на экран сообщение "Hello World!", вначале создав объект Task, а затем вызвав метод Start():
Task task = new Task (() => Console.Write ("Hello World!"));
task.Start();
Что бы выполнить задачу синхронно (в том же потоке) небходимо вызвать метод RunSynchronously() вместо вызова метода Start():
Task task = new Task (() => Console.Write ("Hello World!"));
task.RunSynchronously()
Класс Task <TResult>, позволяет получить определенный набор данных после завершения выполнения задачи:
Task<int> task = Task.Factory.StartNew< int > (()
{
int i,c,j;
c=5;
j=5;
i=c+j;
return i;
});
DoSomething(); // Выполнение другой операции асинхронно
Console.WriteLine("Результат выполнения задачи:"+task.Result);
Console.ReadLine();
увеличить изображение
Рис. 7.2.Результат выполнения программы с использованием класса Task <TResult>
Дата добавления: 2017-06-02; просмотров: 223;