Взаимодействие с процессами в рамках платформы .NET

Взаимодействие с процессами в рамках платформы .NET

Хотя процессы и потоки сами по себе не являются чем-то новым, способы взаимодействия с этими примитивами в рамках платформы .NET существенно изменены (к лучшему). Чтобы успешно пройти путь к пониманию приемов построения компоновочных блоков с поддержкой множества потоков (см. главу 14), мы начнем с обсуждения возможностей взаимодействия с процессами на основе использования библиотек базовых классов .NET.

Пространство имен System.Diagnostics определяет ряд типов, позволяющих программное взаимодействие с процессами, а также типов, связанных с диагностикой системы (например, с журналом регистрации системных событий и счетчиками производительности). В этой главе мы рассмотрим только те связанные с процессами типы, которые определены в табл. 13.1.

Таблица 13.1. Избранные члены пространства имен System.Diagnostics

Типы System.Diagnostics для поддержки процессов Описание
Process Класс Process обеспечивает доступ к локальным и удаленным процессам, а также позволяет программно запускать и останавливать процессы
ProcessModule Этот тип представляет модуль (*.dll или *.exe), загруженный в рамках конкретного процесса. При этом тип ProcessModule может представлять любой модуль – модуль COM, модуль .NET или традиционный двоичный файл C
ProcessModuleCollection Предлагает строго типизованную коллекцию объектов ProcessModule
ProcessStartlnfo Указывает множество значений, используемых при запуске процесса с помощью метода Process.Start()
ProcessThread Представляет поток в рамках данного процесса. Тип ProcessThread используется для диагностики множества потоков процесса, а не для того, чтобы порождать новые потоки выполнения в рамках данного процесса
ProcessThreadCollection Предлагает строго типизованную коллекцию объектов PrосessThread 

Тип System.Diagnostics.Process позволяет проанализировать процессы, выполняемые на данной машине (локальной или удаленной). Класс Process предлагает также члены, которые позволяют запускать и останавливать процессы программными средствами, устанавливать уровни приоритета и получать список активных потоков и/или загруженных модулей, выполняемых в рамках данного процесса. В табл. 13.2 предлагается список некоторых (но не всех) членов System.Diagnostics.Process.

Таблица 13.2. Избранные члены типа Process

Член Описание
ExitCode Свойство, содержащее значение, которое указывается процессом при завершении его работы. Для получения этого значения необходимо обработать событие Exited (при асинхронном уведомлении) или вызвать метод WaitForExit() (при синхронном уведомлении)
ExitTime Свойство, содержащее штамп времени, соответствующий прекращению работы процесса (и представленный типом DateTime)
Handle Свойство, возвращающее дескриптор, назначенный процессу операционной системой
HandleCount Свойство, возвращающее число дескрипторов, открытых процессом
Id Свойство, содержащее идентификатор процесса (PID) для данного процесса
MachineName Свойство, содержащее имя компьютера, на котором выполняется данный процесс
MainModule Свойство, получающее тип ProcessModule, который представляет главный модуль данного процесса
MainWindowTitle MainWindowHandle Свойство MainWindowTitle получает заголовок главного окна процесса (если процесс не имеет главного окна, будет возвращена пустая строка). Свойство MainWindowHandle получает дескриптор (представленный типом System.IntPtr) соответствующего окна. Если процесс не имеет главного окна, типу IntPtr присваивается значение System.IntPtr.Zero
Modules Свойство, обеспечивающее доступ к строго типизованной коллекции ProcessModuleCollection, представляющей множество модулей (*.dll или *.exe), загруженных в рамках текущего процесса
PriorityBoostEnabled Это свойство указывает, должна ли операционная система временно ускорять выполнение процесса, когда его главное окно получает фокус ввода
PriorityClass Свойство, позволяющее прочитать или изменить данные базового приоритета соответствующего процесса
ProcessName Свойство, содержащее имя процесса (которое, как вы можете догадаться, соответствует имени приложения)
Responding Значение этого свойства указывает, должен ли пользовательский интерфейс процесса реагировать на действия пользователя
StartTime Свойство с информацией о времени, соответствующем старту данного процесса (эта информация представлена типом DateTime)
Threads Свойство, получающее набор потоков, выполняющихся в рамках данного процесса (представляется массивом типов ProcessThread)
CloseMainWindow() Метод, завершающий процесс с пользовательским интерфейсом путем отправки соответствующего сообщения о закрытии главного окна
GetCurrentProcess() Статический метод, возвращающий тип Process, используемый для представления процесса, активного в настоящий момент
GetProcesses() Статический метод, возвращающий массив компонентов Process, выполняющихся на данной машине
Kill() Метод, немедленно прекращающий выполнение соответствующего процесса
Start() Метод, начинающий выполнение процесса
Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Поддерживаемые платформы

Из книги Linux From Scratch автора Бикманс Герард

Поддерживаемые платформы Мы стараемся сделать LFS как можно более универсальной. Однако, примите к сведению, что основная разработка ведется на платформе x86. Мы постараемся включить информацию о различиях компиляции для других платформ, например для PPC. Если вы


Главные компоненты платформы .NET (CLR, CTS и CLS)

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Главные компоненты платформы .NET (CLR, CTS и CLS) Теперь, когда вы знаете о некоторых преимуществах, обеспечиваемых .NET, давайте рассмотрим три ключевых (и взаимосвязанных) компонента, которые и обеспечивают эти преимущества: CLR, CTS и CLS. С точки зрения программиста .NET может


ГЛАВА 11 Взаимодействие между процессами

Из книги Системное программирование в среде Windows автора Харт Джонсон М

ГЛАВА 11 Взаимодействие между процессами В главе 6 было показано, как создавать процессы и управлять ими, тогда как главы 7—10 были посвящены описанию методов управления потоками, которые выполняются внутри процессов, и объектов, обеспечивающих их синхронизацию. Вместе с


Управление изменениями в рамках проекта SAP

Из книги Внедрение SAP R/3: Руководство для менеджеров и инженеров автора Кале Вивек

Управление изменениями в рамках проекта SAP Внедрение изменений и управление реакцией на изменение — это две важные задачи, с которыми сталкиваются компании в наше время. Способность изменять бизнес-процессы вносит непосредственный вклад в практический результат


Настройка сервера для работы в рамках поддерева chroot

Из книги Сетевые средства Linux автора Смит Родерик В.

Настройка сервера для работы в рамках поддерева chroot Создав поддерево chroot, можно приступать к его использованию. Для этого надо сконфигурировать сервер для работы в рамках поддерева, организовать запуск сервера и обеспечить контроль доступа к поддереву chroot извне.


Запуск сервера в рамках поддерева chroot

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

Запуск сервера в рамках поддерева chroot Если сервер осуществляет вызов функции chroot(), вероятнее всего, что в его конфигурационном файле содержится одна или несколько опций, предназначенных для управления выполнением в рамках поддерева chroot. Например, для ProFTPd предусмотрена


Запуск сервера BIND в рамках поддерева chroot

Из книги Путь программиста: от 100$ до 10000$ в месяц автора Никитин Александр

Запуск сервера BIND в рамках поддерева chroot Ранее описывался процесс подготовки сервера к запуску в рамках поддерева chroot. Чтобы лучше понять изложенный выше материал, желательно рассмотреть запуск конкретного сервера в подобном режиме. В качестве примера выберем сервер


Определение платформы

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Определение платформы Если нужно определить, на какой платформе запущено ваше приложение, то здесь вам не обойтись без вызова функции Windows API SystemParametersInfo.Для начала нужно создать новый класс PlatformDetector, в котором следует объявить функцию SystemParametersInfo и методы определения


Шаг 1. Новичок. Опыт работы = 0. Знания в рамках школьных и институтских курсов информатики.

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Шаг 1. Новичок. Опыт работы = 0. Знания в рамках школьных и институтских курсов информатики. Славный период, когда мы мало что знаем, ещё меньше умеем, но страстно желаем начать работать. Несмотря на то, что рано или поздно эту стадию преодолеют все (все же когда-то начинают


Алгоритмы и платформы

Из книги Операционная система UNIX автора Робачевский Андрей М.

Алгоритмы и платформы В обсуждении быстродействия алгоритмов мы до сих пор не затрагивали вопросов, касающихся операционной системы и оборудования компьютера, на котором выполняется реализация алгоритма. О-нотация справедлива только для какой-то виртуальной


Память на сервере (все платформы)

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Память на сервере (все платформы) Оценка памяти сервера включает множество факторов.* Работа сервера Firebird. Сервер Firebird осуществляет эффективное использование ресурсов сервера. Суперсервер (Superserver) после старта использует приблизительно 2 Мбайта памяти. Классический


Смешанные платформы

Из книги автора

Смешанные платформы Архитектура Firebird позволяет клиентам, запущенным в одной операционной системе, получить доступ к серверу Firebird, выполняющемуся на платформе и в операционной системе, отличных от клиентских. Часто используемый вариант- одновременный запуск нескольких


Взаимодействие между процессами

Из книги автора

Взаимодействие между процессами Как уже обсуждалось, в UNIX процессы выполняются в собственном адресном пространстве и по существу изолированы друг от друга. Тем самым сведены к минимуму возможности влияния процессов друг на друга, что является необходимым в


Взаимодействие с прикладными процессами

Из книги автора

Взаимодействие с прикладными процессами Рассмотренный ранее программный интерфейс TLI полностью реализует функциональность TPI. Легко заметить соответствие между отдельными функциями TLI и примитивами TPI, приведенными в табл. 6.10. Схема вызова функций TPI и обмена


Встраивание сценариев в рамках элемента SCRIPT

Из книги автора

Встраивание сценариев в рамках элемента SCRIPT Кроме возможности обработки событий, для внедрения сценариев в веб-страницы в языке разметки HTML есть специальный элемент SCRIPT. Браузер, встретив тег <script> в процессе разбора кода, интерпретирует текст, последующий до