Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ ОС ЭКЗАМЕН.docx.doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
185.86 Кб
Скачать

23. Использование WaitableTimerдля синхронизации. Функции:

Объект waitable timer - объект синхронизации, состояние которого установлено, когда указанный поток своевременно выполнился. Есть два типа waitable timer, которые могут быть созданы: с ручным сбросом и синхронизированный. Таймер любого типа может быть периодический таймером.

HANDLE WINAPI CreateWaitableTimer(

LPSECURITY_ATTRIBUTES lpTimerAttributes, //указатель на структуру

BOOL bManualReset, //если true – ручного сброса, false – синхронизированный

LPCTSTR lpTimerName //имя объекта таймера

);

BOOL WINAPI SetWaitableTimer(

HANDLE hTimer, //дескриптор объекта таймера

const LARGE_INTEGER *pDueTime, //Времени, после которого состояние таймер должен быть установлен в сигнальное положение

LONG lPeriod, //период таймера в миллисекундах

PTIMERAPCROUTINE pfnCompletionRoutine, //указатель на необязательную процедуру завершения

LPVOID lpArgToCompletionRoutine, //Указатель на структуру, которая передается в процедуру завершения.

BOOL fResume //Устанавливает режим обеспечения в спящем режиме

);

24) Управление процессом. Планирование и диспетчеризация.

Запуск процесса во время выполнения с помощью свойств StartInfo

  1. Установите параметры запуска, предоставляемые свойством StartInfo.

  2. Вызовите метод Start компонента Process.

Остановка процесса

  1. Вызовите метод GetProcessesByName для извлечения процесса, который требуется остановить.

  2. Вызовите один из следующих методов:

    • Если процесс имеет пользовательский интерфейс, вызовите метод CloseMainWindow.

    • Если процесс безоконный, вызовите метод Kill.

Проверка отклика процесса

  1. Если процесс не был запущен при помощи компонента Process, свяжите его с соответствующим процессом.

  2. Просмотрите значение свойства Responding.

  3. Определите порядок действий в зависимости от значения свойства.

В следующем примере показано, как определить, отвечает ли программа Блокнот на запросы. Если свойство Responding имеет значение true, вызовите метод CloseMainWindow, чтобы закрыть приложение. Если свойство Responding имеет значение false, для принудительного завершения процесса используется метод M:System.Diagnostics.Process.Kill.

Проверка завершенности процесса

  • Просмотрите значение свойства HasExited компонента Process, с помощью которого процесс был запущен.

В следующем примере показано, как использовать свойство HasExited для проверки завершенности процесса под названием Process1, связанного с компонентом Process. Если процесс еще не завершен, вызовите метод CloseMainWindow, чтобы закрыть приложение.

Просмотр запущенных процессов

  1. Объявите пустой массив типа Process.

  2. Заполните пустой массив значениями, возвращенными методом GetProcesses.

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

Ожидание завершения действий процессом

  1. Свяжите экземпляр компонента Process с процессом, который нужно запустить. Дополнительные сведения см. в разделе Практическое руководство. Назначение процессов.

  2. Запустите процесс, вызвав метод Start.

  3. Вызовите соответствующий метод WaitForInputIdle.

    • Метод WaitForInputIdle предписывает компоненту Process подождать неограниченное время, пока связанный с ним процесс перейдет в состояние бездействия.

    • Метод WaitForInputIdle предписывает компоненту Process подождать указанное количество времени в миллисекундах, пока связанный процесс перейдет в состояние бездействия.