- •Организация 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. Обновление базы данных с помощью адаптера данных.
Управление временем существования потоков.
Иногда выполнение потока необходимо приостановить. Например, поток можно использовать для отображения времени суток. Если пользователь желает убрать часы с экрана, соответствующий поток можно приостановить. Позже, когда необходимость в часах появится снова, выполнение приостановленного потока можно возобновить. В любом случае приостановить и возобновить поток — дело нехитрое. Иногда нужно и вовсе завершить выполнение потока. Завершение выполнения потока отличается от приостановки тем, что завершенный поток удаляется из системы, и его выполнение не может быть возобновлено в дальнейшем.
Часто приложение должно ожидать завершения выполнения потока. Для этого в классе Thread предусмотрен метод Join. Метод Join сообщает системе, что приложение должно ожидать завершения потока. Конечно, в таком простом примере второй поток на самом деле не нужен, так как система простаивает в ожидании его завершения. Для большей наглядности создадим пять потоков, выполняющих некоторые операции, и организуем ожидание их завершения. При работе с многопоточным кодом задача программиста несколько усложняется, так необходимо дождаться завершения всех потоков. Сделать это можно, сохранив ссылки на все потоки и вызвав для каждого из них метод Join, чтобы дождаться завершения очередного потока.
Для приостановки потока используйте метод Thread. Suspend(), а для его возобновления — метод Thread.Resume(). Форматы использования этих методов таковы:
public void Suspend()
public void Resume()
Если вызывающий поток находится не в подходящем для вызываемого метода состоянии, генерируется исключение типа ThreadStateException. Такие последствия может иметь, например, попытка возобновить поток, который не был приостановлен. Чтобы завершить поток, используйте метод Thread.Abort(). Самый простой формат его использования выглядит так:
public void Abort(). Метод Abort() генерирует исключение типа ThreadAbortException для потока, из которого этот метод вызван. Это исключение и заставляет поток завершиться. Кроме того, то же самое исключение может быть перехвачено программным кодом (с автоматической его регенерацией для завершения потока). Однако следует учитывать, что метод Abort() не всегда способен немедленно остановить выполнение потока, поэтому, если важно, чтобы поток был завершен до продолжения вашей программы, необходимо сопроводить вызов метода Abort() вызовом метода Join(). В некоторых (довольно редких) случаях метод Abort() не в состоянии завершить поток. Это возможно в ситуации, когда finally-блок включен в бесконечный цикл.
Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
С развитием Интернет понадобилась модель доступа к данным, простая для работы в серверных сценариях, и позволяющая клиенту и серверу обмениваться данными. В ответ на эту потребность и появилась технология ADO. Однако этой технологии не хватало некоторых ключевых функций, необходимых для создания мощных приложений. Например, все больше и больше разработчиков хотели бы работать с XML-данными. Появилась новейшая технология доступа к данным ADO.NET, назначение которой помогать разработке эффективных многоуровневых приложений для работы с БД в интрасетях и Интернете.
Платформа .NET определяет ряд пространств имен, которые позволяют непосредственно взаимодействовать с локальными и удаленными реляционными базами данных. Все вместе эти пространства имен известны как ADO.NET. ADO (ActiveX Data Objects).NET – это модель доступа к данным в приложениях .NET. Ее можно использовать для доступа как к реляционным базам данных, таким как Microsoft SQL Server, Microsoft Access, так и к другим источникам данных, для которых существуют OLEDB-провайдеры.
В отличие от классической ADO, которая была в основном предназначена для тесно связанных клиент-серверных систем, ADO.NET больше нацелена на автономную работу с помощью объектов DataSet. Эти типы представляют локальные копии любого количества взаимосвязанных таблиц данных, каждая из которых содержит набор строк и столбцов. Объекты DataSet позволяют вызывающей сборке (наподобие веб-страницы или программы, выполняющейся на настольном компьютере) работать с содержимым DataSet, изменять его, не требуя подключения к источнику данных, и отправлять обратно блоки измененных данных для обработки с помощью соответствующего адаптера данных.
Далее, в решениях, требующих офлайнового или удаленного доступа к данным, ADO.NET использует XML для обмена данными между программами или с Web-страницами. Любой компонент, который обслуживает XML, также может использовать и компоненты ADO.NET. Если передача пакетов компонентом ADO.NET подразумевает поставку набора данных в файле XML, компонентом, способным обеспечить его получение, может быть только компонент ADO.NET. Передача данных в XML-формате даёт возможность программистам легко отделить обработку данных от компонент пользовательского интерфейса data-sharing прикладных программ, разместив их на отдельных серверах. Это может существенно повысить эффективность и надёжность многопользовательских систем.
ADO.NET обладает также хорошей масштабируемостью, что требуется для совместно использующих данные прикладных программ, работающих на основе Web. Такие Web-программы могут обслужить десятки, сотни, а то и тысячи пользователей. ADO.NET не применяет длительные блокировки баз данных или такие активные подключения, которые на долгое время монополизируют ресурсы сервера, являющимися (как правило) весьма ограниченными. Это позволяет увеличивать число пользователей без значительного увеличения утилизации ресурсов системы.
Основной недостаток ADO.NET – ограниченные возможности для работы с запросами одного из наиболее широко используемого компонента – DataSet.
