Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
к зачету по техпрог.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
139.43 Кб
Скачать

Случаи использования многопоточности:

  • выполнение длительных процедур, ходом выполнения которых надо управлять;

  • функциональное разделение программного кода: пользовательский интерфейс – функции обработки информации;

  • обращение к серверам и службам Интернета, базам данных, передача данных по сети;

  • одновременное выполнение нескольких задач, имеющих различный приоритет.

Потоки в с#

  • Классы, поддерживающие многопоточное программирование, определены в пространстве именSystem.Threading

  • На платформе .NET не существует прямого соответствия "один к одному" между доменами приложений (AppDomain) и потоками. Фактически определенный AppDomain может иметь несколько потоков, выполняющихся в каждый конкретный момент времени. Более того, конкретный поток не привязан к одному домену приложений на протяжении своего времени существования. Потоки могут пересекать границы доменов приложений, когда это вздумается планировщику Windows и CLR.

C# поддерживает параллельное выполнение кода через многопоточность. Поток – это независимый путь исполнения, способный выполняться одновременно с другими потоками.

Программа на C# запускается как единственный поток, автоматически создаваемый CLR и операционной системой (“главный” поток), и становится многопоточной при помощи создания дополнительных потоков.

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

System.Threading.Thread newThread = new System.Threading.Thread(AMethod);

Чтобы начать выполнение нового потока, следует использовать метод Start

newThread.Start();

Чтобы остановить выполнение потока, следует использовать метод Abort

newThread.Abort();

Деятельность по созданию потока предполагает три этапа:

  • определение метода, который будет играть роль точки входа в поток;

  • создание объекта – представителя специального класса-делегата ( ThreadStart class ), который настраивается на точку входа в поток;

  • создание объекта – представителя класса потока. При создании объекта потока конструктору потока передается в качестве параметра ссылка на делегата, настроенного на точку входа.

  • Класс Thread является самым элементарным из всех типов пространства имен System.Threading. Этот класс представляет объектно-ориентированную оболочку вокруг заданного пути выполнения внутри определенного AppDomain. Этот тип также определяет набор методов (как статических, так и уровня экземпляра), которые позволяют создавать новые потоки внутри текущего AppDomain, а также приостанавливать, останавливать и уничтожать определенный поток.

Основные статические свойства:

  • CurrentContext - свойство только для чтения возвращает контекст, в котором в данный момент выполняется поток

  • CurrentThread- свойство только для чтения возвращает ссылку на текущий выполняемый поток

  • GetDomain(), GetDomainID() методы возвращает ссылку на текущий AppDomain или идентификатор этого домена, в котором выполняется текущии поток