
- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
- •Классы потоков. Класс Stream. Классы байтовых потоков. Классы символьных потоков. Классы двоичных потоков.
- •1.5. Классы символьных потоков:
- •1.6. Классы двоичных потоков:
- •Класс FileStream и файловый ввод-вывод на побайтовой основе. Открытие и закрытие файла. Запись данных в файл. Считывание байтов из объекта класса FileStream.
- •Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader.
- •Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
- •Наиболее важные методы выходного потока BinaryWriter:
- •Навигация по файловой системе: классы для работы с файловой системой.
- •Получение сведений о файле; копирование файлов; перечисление файлов в папке; изменение расширения файлов.
- •5.3. Изменение расширения файлов
- •Основы организации потоков. Потоки и многозадачность.
- •Пространство имен System.Threading. Класс Thread. Создание потока.
- •Создание потока. Чтобы создать поток, необходимо создать объект типа Thread. В классе Thread определен следующий конструктор: public Thread(ThreadStart entryPoint),
- •Приоритет потоков. Класс Thead поддерживает установку и получение приоритета потока. Для этого используется перечисление ThreadPriority. Его значения:
- •Использование нескольких потоков. Планирование потоков, приоритеты потоков. Можно создавать в программе несколько дочерних потоков.
- •Создать статический метод SimpleWork() в классе MultiThread (перед методом Main), который выводит на экран Id-номер каждого потока:
- •Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий.
- •Синхронизация доступа к общим данным с помощью блокировок.
- •2) Выполнить блокировку операторов в ранее используемых методах SimpleWork и run:
- •Управление временем существования потоков.
- •Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
- •2.2 Три стороны технологии ado.Net
- •15.Поставщики данных ado.Net. Поведение объектов подключения.
- •Объектная модель ado.Net.
- •Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
- •Конструкторы
- •Свойства
- •События
- •Конструкторы
- •Свойства
- •Выборка, добавление, удаление и обновление данных с помощью sql-запросов на подсоединенном уровне.
- •Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
- •Сравнение DataReader и DataSet:
- •Чтение данных из DataReader:
- •Организация хранения данных. Объект DataSet.
- •Строки: объект DataRow.
- •Конструкторы:
- •Свойства
- •Передача данных между источником данных и объектом DataSet. Обновление базы данных с помощью адаптера данных.
Пространство имен System.Threading. Класс Thread. Создание потока.
Классы, которые поддерживают многопоточное программирование, определены в пространстве имен System.Threading. Поэтому в начало любой многопоточной программы необходимо включить инструкцию:
Некоторые наиболее важные типы этого пространства имен представлены в табл. 1.
Таблица 1. Некоторые типы пространства имен System.Threading
Тип |
Назначение |
Interlocked |
Класс для синхронизированного доступа к переменным, которые используются в разных потоках. |
Monitor |
Класс, обеспечивающий синхронизацию потоковых объектов при помощи блокировок и управления ожиданием |
Mutex |
Класс-примитив синхронизации, используемый для синхронизации между процессами. |
Thread |
Класс, который создает поток, устанавливает его приоритет, получает информацию о состоянии. |
ThreadPool |
Используется для управления набором (пулом потоков) взаимосвязанных потоков. |
ThreadStart |
Делегат, представляющий собой метод, который должен быть выполнен при запуске потока. |
Timer |
Обеспечивает механизм выполнения метода через заданные интервалы времени. Операция ожидания выполняется потоком в пуле потоков. |
WaitHandle |
Представляет во время выполнения все объекты синхронизации (которые позволяют многократное ожидание). |
ReaderWtiterLock |
Класс, определяющий блокировку, поддерживающую один доступ на запись и несколько на чтение. |
TimerCallback |
Делегат для объектов Timer |
WaitCallback |
Делегат, который представляет метод обратного вызова для рабочих элементов |
Класс Thread. Первичный поток создается автоматически. Для создания и запуска вторичных потоков используется класс Thread. Некоторые наиболее важные типы этого класса представлены в табл.2.
Элемент |
Вид |
Описание |
CurrentThread |
Статическое свойство |
Возвращает ссылку на выполняющийся поток (только для чтения) |
IsAlive |
Свойство |
Возвращает true или false в зависимости от того, запущен поток или нет. |
IsBackground |
Свойство |
Возвращает или устанавливает значение, которое показывает, является ли этот поток фоновым. |
Name |
Свойство |
Установка текстового имени потока. |
Priority |
Свойство |
Возвращает или устанавливает приоритет потока (используется перечисление Thread Priority). |
ThreadState |
Свойство |
Возвращает состояние потока (используется перечисление Thread State). |
Abort |
Метод |
Генерирует исключение ThreadAbortException. Вызов этого метода завершает работу потока. |
GetData, SetData |
Статические методы |
Возвращает (устанавливает) значение для указанного слота в текущем потоке. |
GetDomain, GetDomainID |
Статические методы |
Возвращает ссылку на домен приложения (идентификатор домена приложения), в рамках которого работает поток. |
GetHashCode |
Метод |
Возвращает хеш-код для потока. |
Sleep |
Статический метод |
Приостанавливает выполнение текущего потока на заданное количество миллисекунд. |
Interrupt |
Метод |
Прерывает работу текущего потока. |
Join |
Метод |
Блокирует вызывающий поток до завершения другого потока или указанного промежутка времени и завешает поток. |
Resume |
Метод |
Возобновляет работу после приостановки потока. |
Start |
Метод |
Начинает выполнение потока, определенного делегатом ThreadStart. |
Suspend |
Метод |
Приостанавливает выполнение текущего потока. Если выполнение потока уже приостановлено, то игнорируется. |