- •Многопоточность
- •Оглавление
- •Задачи многопоточности
- •Методы создания потоков
- •Делегаты
- •Ожидание завершения работы потока
- •Получение результата работы метода, выполнявшегося в отдельном потоке
- •Класс Thread
- •Ожидание завершения потока
- •Управление выполнением потока
- •«Сон» потока
- •Приоритет потоков
- •Фоновые потоки и потоки «переднего плана»
- •Класс ThreadPool
- •Синхронизация потоков
- •Оператор lock
- •Класс ReaderWriterLock
- •Класс Mutex
- •Класс WaitHandle
- •Класс AutoResetEvent
- •Класс ManualResetEvent
- •Блокировка потоков
- •Взаимодествие с пользовательским интерфейсом
- •Метод Invoke
- •Использование SynchronizationContext
- •Класс BackgroundWorker
- •Окончание работы и возвращение результата
- •Прогресс выполнения
- •Отмена выполнения метода
- •Объект Dispatcher
- •Класс BackgroundWorker
- •Заключение
Класс BackgroundWorker
WPF так же предоставляет свою реализацию класса BackgroundWorker. Она практически не отличается от аналогичного класса в WinForms, поэтому мы не будет рассматриваеть ее здесь.
Заключение
Мы подошли к концу нашей статьи. Пришло время подвести итоги. .NET Framework обладает мощной поддержкой многопоточности. В зависимости от стоящей перед вами задачи вы можете выбирать различные средства создания отдельных потоков, управления ими, прерывания и ожидания их завершения. Так же .NET Framework предлагает развитые механизы синхронизации потоков, позволяющие решить задачу практически любой сложности. Работа с отдельными потоками проста, хотя и имеет несколько моментов, на которые следует обратить внимание при создании многопоточного приложения. К ним относятся взаимодействие с пользовательским интерфейсом и необходимость избегать взаимной блокировки. В связи с этим прежде чем браться за реализацию многопоточного приложения следует тщательно продумать его инфраструктуру.