Способы параллельного выполнения задач в C#

Содержание

Слайд 2

Thread. Особенности и применение.

Потоки удобны в применении, когда требуется:
Выполнять операции в фоновом

Thread. Особенности и применение. Потоки удобны в применении, когда требуется: Выполнять операции
режиме без необходимости в ожидании их завершения
Ускорить выполнение операции путем ее распараллеливания по потокам
Задать потоку имя, чтобы было удобнее искать его в отладчике
Поставить повышенный или пониженный приоритет потоку

Слайд 3

Thread. Основные свойства.

Пространство имен - System.Threading;
CurrentContext позволяет получить контекст, в котором выполняется

Thread. Основные свойства. Пространство имен - System.Threading; CurrentContext позволяет получить контекст, в
поток
CurrentThread возвращает ссылку на выполняемый поток
IsAlive указывает, работает ли поток в текущий момент
IsBackground указывает, является ли поток фоновым
Name содержит имя потока
Priority хранит приоритет потока - значение перечисления ThreadPriority
ThreadState возвращает состояние потока - одно из значений перечисления ThreadState

Слайд 4

Thread. Некоторые методы.

Sleep останавливает поток на определенное количество миллисекунд
Abort уведомляет среду CLR

Thread. Некоторые методы. Sleep останавливает поток на определенное количество миллисекунд Abort уведомляет
о том, что надо прекратить поток, однако прекращение работы потока происходит не сразу, а только тогда, когда это становится возможно. Для проверки завершенности потока следует опрашивать его свойство ThreadState
Interrupt прерывает поток на некоторое время
Join блокирует выполнение вызвавшего его потока до тех пор, пока не завершится поток, для которого был вызван данный метод
Resume возобновляет работу ранее приостановленного потока
Start запускает поток
Suspend приостанавливает поток

Слайд 5

Thread. Создание и запуск.

Для запуска нового потока нам надо определить задачу в

Thread. Создание и запуск. Для запуска нового потока нам надо определить задачу
приложении, которую будет выполнять данный поток. Для этого мы можем ввести добавить новый метод, производящий какие-либо действия.

Слайд 6

Thread. Создание и запуск.

Для создания нового потока используется делегат ThreadStart, который получает

Thread. Создание и запуск. Для создания нового потока используется делегат ThreadStart, который
в качестве параметра метод, который мы определили выше.
Чтобы запустить поток, вызывается метод Start.

Слайд 7

Thread. Передача параметров в поток.

Для этой цели используется делегат ParameterizedThreadStart. Его действие

Thread. Передача параметров в поток. Для этой цели используется делегат ParameterizedThreadStart. Его
похоже на функциональность делегата ThreadStart.

Слайд 8

Thread. Доступ к элементам окна.

Thread. Доступ к элементам окна.

Слайд 9

Thread. Доступ к элементам окна. Invoke.

Thread. Доступ к элементам окна. Invoke.

Слайд 10

BackgroundWorker. Возможности.

BackgroundWorker – класс из пространства имен System.ComponentModel для управления рабочими потоками. Он обеспечивает следующие

BackgroundWorker. Возможности. BackgroundWorker – класс из пространства имен System.ComponentModel для управления рабочими
возможности:
Флаг отмены операции для завершения потока без использования Abort.
Стандартный протокол для сообщений о ходе выполнения операции, ее завершении и отмене.
Обработка исключений в рабочем потоке.
Возможность обновления элементов управления окна в процессе выполнения или при завершении операции.
Вывод: можно не добавлять try/catch в рабочий метод и обновлять элементы управления без использования Control.Invoke.

Слайд 11

BackgroundWorker. Прогресс выполнения.

Чтобы добавить отображение выполнения операции:
Установите свойство WorkerReportsProgress в true.
Периодически вызывайте ReportProgress из обработчика DoWork с указанием

BackgroundWorker. Прогресс выполнения. Чтобы добавить отображение выполнения операции: Установите свойство WorkerReportsProgress в
количества “выполненных процентов”
Обрабатывайте событие ProgressChanged, запрашивая свойство ProgressPercentage его аргумента.
Код в обработчике ProgressChanged может свободно обращаться к элементам управления UI так же, как и в RunWorkerCompleted. Обычно это нужно для обновления индикатора прогресса.

Слайд 12

BackgroundWorker. Отмена операции.

Чтобы иметь возможность отмены операции:
Установите свойство WorkerSupportsCancellation в true.
Периодически проверяйте свойство CancellationPending в обработчике DoWork –

BackgroundWorker. Отмена операции. Чтобы иметь возможность отмены операции: Установите свойство WorkerSupportsCancellation в
если оно установлено в true, установите свойство Cancel аргумента DoWorkEventArgs в true и сделайте return
Для запроса отмены операции вызывайте CancelAsync.

Слайд 13

BackgroundWorker. Создание и запуск.

BackgroundWorker. Создание и запуск.

Слайд 14

BackgroundWorker. DoWork.

BackgroundWorker. DoWork.

Слайд 15

BackgroundWorker. DoWork.

BackgroundWorker. DoWork.

Слайд 16

Task. Особенности.

Пространство имен - System.Threading.Tasks
Практически нет накладных расходов при создании
Могут возвращать результат
Поддерживают

Task. Особенности. Пространство имен - System.Threading.Tasks Практически нет накладных расходов при создании
отмену выполнения задачи
Возможно асинхронное выполнение

Слайд 17

Task. Создание и запуск.

Task. Создание и запуск.

Слайд 18

Task. Async/Await.

Ключевое слово async указывает, что метод или лямбда-выражение может выполняться асинхронно. А оператор await позволяет

Task. Async/Await. Ключевое слово async указывает, что метод или лямбда-выражение может выполняться
остановить текущий поток, пока не завершится работа метода, помеченного как async.
Эти операторы используются вместе для создания асинхронного метода. Такой метод, определенный с помощью модификатора async и содержащий одно или несколько выражений await, называется асинхронным методом.
Имя файла: Способы-параллельного-выполнения-задач-в-C#.pptx
Количество просмотров: 30
Количество скачиваний: 1