Взаимодействие с процессами в рамках платформы .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() Метод, начинающий выполнение процессаБолее 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Встраивание сценариев в рамках элемента SCRIPT
Встраивание сценариев в рамках элемента SCRIPT Кроме возможности обработки событий, для внедрения сценариев в веб-страницы в языке разметки HTML есть специальный элемент SCRIPT. Браузер, встретив тег <script> в процессе разбора кода, интерпретирует текст, последующий до
ГЛАВА 11 Взаимодействие между процессами
ГЛАВА 11 Взаимодействие между процессами В главе 6 было показано, как создавать процессы и управлять ими, тогда как главы 7—10 были посвящены описанию методов управления потоками, которые выполняются внутри процессов, и объектов, обеспечивающих их синхронизацию. Вместе с
Взаимодействие между процессами
Взаимодействие между процессами Как уже обсуждалось, в UNIX процессы выполняются в собственном адресном пространстве и по существу изолированы друг от друга. Тем самым сведены к минимуму возможности влияния процессов друг на друга, что является необходимым в
Взаимодействие с прикладными процессами
Взаимодействие с прикладными процессами Рассмотренный ранее программный интерфейс TLI полностью реализует функциональность TPI. Легко заметить соответствие между отдельными функциями TLI и примитивами TPI, приведенными в табл. 6.10. Схема вызова функций TPI и обмена
Поддерживаемые платформы
Поддерживаемые платформы Мы стараемся сделать LFS как можно более универсальной. Однако, примите к сведению, что основная разработка ведется на платформе x86. Мы постараемся включить информацию о различиях компиляции для других платформ, например для PPC. Если вы
Настройка сервера для работы в рамках поддерева chroot
Настройка сервера для работы в рамках поддерева chroot Создав поддерево chroot, можно приступать к его использованию. Для этого надо сконфигурировать сервер для работы в рамках поддерева, организовать запуск сервера и обеспечить контроль доступа к поддереву chroot извне.
Запуск сервера в рамках поддерева chroot
Запуск сервера в рамках поддерева chroot Если сервер осуществляет вызов функции chroot(), вероятнее всего, что в его конфигурационном файле содержится одна или несколько опций, предназначенных для управления выполнением в рамках поддерева chroot. Например, для ProFTPd предусмотрена
Запуск сервера BIND в рамках поддерева chroot
Запуск сервера BIND в рамках поддерева chroot Ранее описывался процесс подготовки сервера к запуску в рамках поддерева chroot. Чтобы лучше понять изложенный выше материал, желательно рассмотреть запуск конкретного сервера в подобном режиме. В качестве примера выберем сервер
Шаг 1. Новичок. Опыт работы = 0. Знания в рамках школьных и институтских курсов информатики.
Шаг 1. Новичок. Опыт работы = 0. Знания в рамках школьных и институтских курсов информатики. Славный период, когда мы мало что знаем, ещё меньше умеем, но страстно желаем начать работать. Несмотря на то, что рано или поздно эту стадию преодолеют все (все же когда-то начинают
Главные компоненты платформы .NET (CLR, CTS и CLS)
Главные компоненты платформы .NET (CLR, CTS и CLS) Теперь, когда вы знаете о некоторых преимуществах, обеспечиваемых .NET, давайте рассмотрим три ключевых (и взаимосвязанных) компонента, которые и обеспечивают эти преимущества: CLR, CTS и CLS. С точки зрения программиста .NET может
Алгоритмы и платформы
Алгоритмы и платформы В обсуждении быстродействия алгоритмов мы до сих пор не затрагивали вопросов, касающихся операционной системы и оборудования компьютера, на котором выполняется реализация алгоритма. О-нотация справедлива только для какой-то виртуальной
Память на сервере (все платформы)
Память на сервере (все платформы) Оценка памяти сервера включает множество факторов.* Работа сервера Firebird. Сервер Firebird осуществляет эффективное использование ресурсов сервера. Суперсервер (Superserver) после старта использует приблизительно 2 Мбайта памяти. Классический
Смешанные платформы
Смешанные платформы Архитектура Firebird позволяет клиентам, запущенным в одной операционной системе, получить доступ к серверу Firebird, выполняющемуся на платформе и в операционной системе, отличных от клиентских. Часто используемый вариант- одновременный запуск нескольких
Определение платформы
Определение платформы Если нужно определить, на какой платформе запущено ваше приложение, то здесь вам не обойтись без вызова функции Windows API SystemParametersInfo.Для начала нужно создать новый класс PlatformDetector, в котором следует объявить функцию SystemParametersInfo и методы определения
Управление изменениями в рамках проекта SAP
Управление изменениями в рамках проекта SAP Внедрение изменений и управление реакцией на изменение — это две важные задачи, с которыми сталкиваются компании в наше время. Способность изменять бизнес-процессы вносит непосредственный вклад в практический результат