Прежде всего: я знаю, что это довольно старый, но до сих пор нет принятого ответа, поэтому, возможно, мой подход поможет кому-то еще. :)
Что я сделал, чтобы решить это:
process.Start();
while (true)
{
try
{
var time = process.StartTime;
break;
}
catch (Exception) {}
}
Ассоциация var time = process.StartTime
вызовет исключение, если процесс не запустился. Поэтому, как только он пройдет, можно с уверенностью предположить, что процесс запущен, и продолжить работу с ним. Я использую это, чтобы дождаться запуска процесса Java, так как это занимает некоторое время. Таким образом, он должен зависеть от того, на какой машине запущено приложение, а не на Thread.Sleep()
.
.
Я понимаю, что это не очень чистое решение, но единственное, которое должно быть независимым от производительности, о котором я мог подумать.