Пока процесс не начался, сделайте что-нибудь - PullRequest
0 голосов
/ 29 апреля 2020

Итак, у меня есть фоновая программа, которая начинается с Windows, свернутая в значок на панели задач. После загрузки мне нужно постоянно начинать проверку запуска процесса (например, VL C). Как только процесс начался, он должен дождаться его закрытия, чтобы начать делать что-то, а затем вернуться, чтобы проверить, начался ли он. Я пытался сделать это некоторое время, но я просто не могу понять, как.

Как бы я постоянно проверял, запущена ли программа?

1 Ответ

0 голосов
/ 29 апреля 2020

Одним из способов было бы заставить фоновый Деймон искать программу с конкретным c именем. К сожалению, это не слишком надежно (из-за совпадения имен), потребует большого количества опросов и подвергает риску состояния гонки (процесс запускается, когда ваш демон все еще работает).

Что будет быть надежным, если Деймон действительно запускает процесс переднего плана. Таким образом, он может работать до Process.Start() и после Process.WaitForExit(), с полной информацией, когда оба состояния происходят: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netcore-3.1

Хорошим примером является Steam. Это процесс одного экземпляра, поэтому любые дальнейшие запросы могут быть переданы в работающий экземпляр. Ссылки на программы / игры на рабочем столе - это ссылки на программы, а не ссылки на программы. Эти ссылки используют: паровой протокол, который связан с паровыми процессами. Таким образом, это выглядит так:

  • пользовательские клики на WebLink с помощью: steam procotoll
  • Windows решает передать это в вызов командной строки программе steam
  • Экземпляр запускается с правильным порядком в командной строке. Одиночный экземпляр не позволит запустить второй экземпляр c, но передаст запрос уже запущенному
  • уже запущенному или внезапно запущенному экземпляру, который вызывает программу, имея полные данные о том, когда он запускается и заканчивается. будучи актуальным логическим абонентом
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...