Как приостановить самый верхний процесс?(решение желательно в c #) - PullRequest
0 голосов
/ 17 марта 2011

У меня есть приложение, написанное в виде модуля поверх хост-приложения.Давайте назовем процесс приложения хоста A и процесс моего приложения B. Процесс B находится в дочернем отношении к процессу A. Из процесса BI запустите другой процесс, называемый его C, и пока процесс C выполняется, я хочу, чтобы A и B были приостановлены.Чтобы запустить C из BI, используйте класс Process, и я блокирую B, вызывая WaitForExit ().Но как также заблокировать A. Опять же, пока C работает A, а B следует приостановить.

Хост-приложение является сторонним приложением, поэтому у меня есть доступ только через API.Я думал о получении родительского процесса B (который является A) и для каждого потока в A, вызывающего его метод Suspend (), но этот метод устарел.Каковы элегантные способы достижения моей цели?

Мое хост-приложение - SAP B1.

1 Ответ

1 голос
/ 17 марта 2011

Только метод .NET Thread.Suspend () устарел.Это не то, что вы хотите сделать здесь, вы пытаетесь приостановить процесс, который, вероятно, даже не управляется.В любом случае, вы бы вызвали функцию Windows SuspendThread ().Это требует дескриптор потока, получить его из OpenThread ().Для этого требуется идентификатор потока, вы можете получить его из ProcessThread .NET.

Это довольно большой молот, который вам следует избегать.Простое отключение главного окна приложения (функция API EnableWindow) должно быть достаточным и гораздо менее случайным.В любом случае требуются навыки работы с API. Посетите pinvoke.net, чтобы получить необходимые объявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...