Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ОСиСП.doc
Скачиваний:
71
Добавлен:
11.05.2015
Размер:
1.78 Mб
Скачать

Фильтрация исключений среды выполнения

Перехватываемые и обрабатываемые исключения можно отфильтровать либо по типу, либо по некоторым критериям, определяемым пользователем.

Обработчики с фильтрацией по типу управляют определенным типом исключения (или производные из этого типа классы).В следующем примере показан обработчик с фильтрацией по типу, позволяющий перехватить определенное исключение, в данном случае исключение FileNotFoundException.

catch(FileNotFoundException e)

{

Console.WriteLine("[Data File Missing] {0}", e);

}

Обработчики с пользовательской фильтрацией перехватывают и обрабатывают исключения на основе требований к исключению, определяемых пользователем. Дополнительные сведения о фильтрации исключений подобным образом содержатся в разделе Использование определенных исключений в блоке Catch.

21 Средства многопоточного программирования в среде .Net. Автономные потоки. Пул потоков.

Многие персональные компьютеры и рабочие станции имеют ЦП, содержащие два или четыре ядра, которые позволяют одновременно выполнять несколько потоков. В ближайшем будущем ожидается, что компьютеры будут иметь значительно больше ядер. Чтобы воспользоваться преимуществами существующего и будущего оборудования, можно распараллеливать код для распределения работы между несколькими процессорами. В прошлом распараллеливание требовало управления потоками и взаимоблокировками на низком уровне. Visual Studio 2010 и .NET Framework 4 улучают поддержка параллельного программирования, путем предоставления новой среды выполнения, новых типов библиотек класса и новых средств диагностики. Эти функциональные возможности упрощают параллельную разработку, что позволяет разработчикам писать эффективный, детализированный и масштабируемый параллельный код с помощью естественных выразительных средств без необходимости непосредственной работы с потоками или пулом потоков. На рисунке представлен общий обзор архитектуры параллельного программирования в .NET Framework 4.

Создание и использование потоков

Если требуется больший контроль над поведением потоков приложения, можно управлять потоками самостоятельно. Однако необходимо иметь в виду, что написание правильных многопоточных приложений может быть сложной задачей. Приложение может перестать отвечать на запросы или могут возникать временные ошибки, вызванные конфликтами.

Новый поток создается путем объявления переменной типа Threadи вызова конструктора, которому предоставляется имя процедуры или метода, которые требуется выполнить в новом потоке.

System.Threading.Thread newThread =

new System.Threading.Thread(AMethod);

Запуск и остановка потоков

Чтобы начать выполнение нового потока, следует использовать метод Start:newThread.Start();

Чтобы остановить выполнение потока, следует использовать метод Abort:newThread.Abort();

Помимо запуска и остановки потоки можно приостанавливать, вызывая метод SleepилиSuspend, возобновлять приостановленный поток методомResumeи уничтожать поток методомAbort.

Методы управления потоками

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

Метод

Действие

Start

Запускает поток.

Sleep

Приостанавливает поток на определенное время.

Suspend

Приостанавливает поток, когда он достигает безопасной точки.

Abort

Останавливает поток, когда он достигает безопасной точки.

Resume

Возобновляет работу приостановленного потока

Join

Приостанавливает текущий поток до тех пор, пока не будет завершен другой поток. При заданном времени ожидания этот метод возвращает значение True при условии, что другой поток закончится за это время.