Читаем C# 4.0 полное руководство - 2011 полностью

}

Console.WriteLine("Основной поток завершен.");

}

}

Ниже приведен результат выполнения этой программы. Обратите внимание на то что задача отменяется через 2 секунды.

Основной поток запущен.

MyTask запущен

Получен запрос на отмену задачи.

Задача tsk отменена

Основной поток завершен.

Как следует из приведенного выше результата, выполнение методаMyTask отменяется в методеMain лишь две секунды спустя. Следовательно, в методеMyTask выполняются четыре шага цикла. Когда же перехватывается исключениеAggregateException,проверяется состояние задачи. Если задачаtskотменена, что и должно произойти в данном примере, то об этом выводится соответствующее сообщение. Следует, однако, иметь в виду, что когда сообщениеAggregateExceptionгенерируется в ответ на отмену задачи, то это еще не свидетельствует об ошибке, а просто означает, что задача была отменена.

Выше были изложены лишь самые основные принципы, положенные в основу отмены задачи и генерирования исключенияAggregateException.Тем не менее эта тема намного обширнее и требует от вас самостоятельного и углубленного изучения, если вы действительно хотите создавать высокопроизводительные, масштабируемые приложения.

Другие средства организации задач

В предыдущих разделах был описан ряд понятий и основных способов организации и исполнения задач. Но имеются и другие полезные средства. В частности, задачи можно делать вложенными, когда одни задачи способны создавать другие, или же порожденными, когда вложенные задачи оказываются тесно связанными с создающей их задачей.

В предыдущем разделе было дано краткое описание исключенияAggregateException,но у него имеются также другие особенности, которые могут оказаться весьма полезными. К их числу относится методFlatten, применяемый для преобразования любых внутренних исключений типаAggregateExceptionв единственное исключениеAggregateException.Другой метод,Handle, служит для обработки исключения, составляющего совокупное исключениеAggregateException.

При создании задачи имеется возможность указать различные дополнительные параметры, оказывающие влияние на особенности ее исполнения. Для этой цели указывается экземпляр объекта типаTaskCreationOptionsв конструкторе классаTaskили же в фабричном методеStartNew. Кроме того, в классеTaskFactoryдоступно целое семейство методовFromAsync, поддерживающих модель асинхронного программирования (АРМ — Asynchronous Programming Model).

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT