Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety1.doc
Скачиваний:
466
Добавлен:
14.02.2015
Размер:
12.78 Mб
Скачать

282 Службы Windows.

Слу́жбы Windows (англ. Windows Service, сервисы) — приложения, автоматически запускаемые системой при запуске Windows и выполняющиеся вне зависимости от статуса пользователя. Имеет общие черты с концепцией демонов в Unix,

Существует несколько режимов для Сервисов: запрещён к запуску; ручной запуск (по запросу); автоматический запуск при загрузке компьютера; автоматический (отложенный) запуск (введён в Windows Vista и Windows Server 2008); обязательный сервис/драйвер (автоматический запуск и невозможность (для пользователя) остановить сервис).

Windows предлагает программу Service Control Manager, с её помощью можно управлять созданием, удалением, запуском и остановкой служб. Приложение, имеющее статус сервиса, должно быть написано таким образом, чтобы оно могло принимать сообщения от Service Control Manager. Затем, одним или несколькими вызовами API, имя службы и другие атрибуты, такие, как его описание, регистрируются в Service Control Manager.

Службы и их атрибуты могут быть изменены в консоли управления MMC: Панель управления Windows -> «Administrative Tools» -> «Services».

Список служб находится в ветке Реестра Windows «HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services». Значения параметра «Start» имеют тип «REG_DWORD» и могут принимать значения:

0 - Низкоуровневые драйверы, например драйверы дисков, которые загружаются на самом раннем этапе загрузки – загрузки ядра;

1 - Драйверы, которые загружаются после инициализации ядра ОС;

2 - Службы, которые должны быть загружены Диспетчером Управления Сервисами (равен параметру - "Авто");

3 - Службы, запускаемые Диспетчером Управления Сервисами, только в случае получения явной инструкции на загрузку (равен параметру - "Вручную");

4 - Службы, которые не загружаются (равен параметру - "Отключено").

Управление службами возможно с помощью командной строки (запуск службы, удаление службы, установка режима запуска).

DHCP-клиент, DNS-клиент, KtmRm для координатора распределенных транзакций, ReadyBoost, Superfetch, Windows Audio, Windows CardSpace, Автоматическое обновление – это неполный список известных служб в операционных системах Windows. В различных версиях операционных систем могут присутствовать одни службы и отсутствовать другие. Некоторые приложения и программы, устанавливаемые отдельно также могут создавать свои службы

283 События в объектно-ориентированном программировании.

Механизм, позволяющий объектам вести себя по-разному в одних и тех же обстоятельствах - это механизм событий. Класс, помимо свойств и методов, может иметь события. Содержательно, событием является некоторое специальное состояние, в котором может оказаться объект класса. Так, для объектов класса "человек" событием может быть рождение или смерть, свадьба или развод.

Интерфейсные и многие другие программные объекты обладают стандартным набором предопределенных событий. Класс, решивший иметь события, должен уметь, по крайней мере, три вещи: 1)объявить событие в классе; 2)зажечь в нужный момент событие, передав обработчику необходимые для обработки аргументы. (Под зажиганием или включением события понимается некоторый механизм, позволяющий объекту уведомить клиентов класса, что у него произошло событие.); 3)проанализировать, при необходимости, результаты события, используя значения выходных аргументов события, возвращенные обработчиком.

Обработчик события - это обычная процедура с аргументами.

Объявление события - это двухэтапный процесс:

Вначале объявляется делегат - функциональный класс, задающий сигнатуру. Как отмечалось при рассмотрении делегатов, объявление делегата может быть помещено в некоторый класс, например, класс Sender. Но, чаще всего, это объявление находится вне класса в пространстве имен. Поскольку одна и та же сигнатура может быть у разных событий, то для них достаточно иметь одного делегата. Для некоторых событий можно использовать стандартные делегаты, встроенные в каркас. Тогда достаточно знать только их имена.

Если делегат определен, то в классе Sender, создающем события, достаточно объявить событие как экземпляр соответствующего делегата. Это делается точно так же, как и при объявлении функциональных экземпляров делегата. Исключением является добавление служебного слова event.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]