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

Interrupt Метод Прерывает работу текущего потока

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

Start Метод Начинает выполнение потока, определенного делегатом

ThreadStart Suspend Метод Приостанавливает выполнение потока. Если выполнение потока уже приостановлено, то игнорируется

Для того чтобы блок кода мог использоваться в каждый момент только одним потоком, применяется оператор lock. Формат оператора:

lock ( выражение ) блок_операторов

Выражение определяет объект, который требуется заблокировать. Для обычных методов в качестве выражения используется ключевое слово this, для статических — typeof (класс). Блок операторов задает критическую секцию кода, которую требуется заблокировать.

10) Асинхронные делегаты.

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

Если при вызове Beginlnvoke был указан метод обратного вызова, этот метод вызывается после завершения потока. Метод обратного вызова также задается с помощью делегата, при этом используется стандартный делегат AsyncCallback. В методе, обратного вызова для получения возвращаемого значения и выходных параметров применяется метод Endlnvoke.

Если метод обратного вызова не был указан в параметрах метода Beginlnvoke, метод EndInvoke можно использовать в потоке, инициировавшем запрос.

11) Общая характеристика процессов ввода-вывода.

Ввод-вывод в С# выполняется с помощью подсистемы ввода-вывода и классов библиотеки .NET. Обмен данными реализуется с помощью потоков. Поток (stream) — это абстрактное понятие, относящееся к любому переносу данных от источника к приемнику. Потоки обеспечивают надежную работу как со стандартными, так и с определенными пользователем типами данных, а также единообразный и понятный синтаксис. Поток определяется как последовательность байтов и не зависит от конкретного устройства, с которым производится обмен

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

Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с внешними устройствами.

Для поддержки потоков библиотека .NET содержит иерархию классов. Эти классы определены в пространстве имен System.IO

Основные классы пространства имен System.Ю

BinaryReader, BinaryWriter Чтение и запись значений простых встроенных типов (целочисленных, логических, строковых и т. п.) во внутренней форме представления.

BufferedStream Временное хранение потока байтов (например, для последующего переноса в постоянное хранилище)

Directory , Directorylnfo, File, Filelnfo Работа с каталогами или физическими файлами: создание, удаление, получение свойств. Возможности классов Fillе и Directory реализованы в основном в виде статических методов. Аналогичные классы Directorylnfo и Filelnfo используют обычные методы

FileStream Произвольный (прямой) доступ к файлу, представленному как поток байтов

MemoryStream Произвольный доступ к потоку байтов в оперативной памяти

StreamWriter, StreamReader Чтение из файла и запись в файл текстовой информации

StringWriter, StringReader Работа с текстовой информацией в оперативной памяти