System.Diagnostics.Process.Start странное поведение

Я пишу приложение для запуска и мониторинга других приложений на C #. Я'используя класс System.Diagnostics.Process для запуска приложений, а затем отслеживайте их, используя свойство Process.Responding для опроса состояния приложения каждые 100 миллисекунд. Я использую Process.CloseMainWindow, чтобы остановить приложение, или Process.Kill, чтобы убить его, еслине отвечает. Я

мы заметили странное поведение, когда иногда объект процесса попадает в состояние, когда отвечающее свойство всегда возвращает true, даже если базовый процесс зависает в цикле и где он не 't ответить на CloseMainWindow.

Один из способов воспроизвести его - опросить свойство Responding сразу после запуска экземпляра процесса. Так например

_process.Start();
bool responding = _process.Responding;

будет воспроизводить состояние ошибки, пока

_process.Start();
Thread.Sleep(1000);
bool responding = _process.Responding;

буду работать. Сокращение периода ожидания до 500 снова приведет к состоянию ошибки.

Что-то в вызове _process.Responding слишком быстро после запуска, кажется, мешает объекту получить правильный обработчик очереди сообщений Windows. Я думаю, мне нужно подождать, пока _process.Start закончит это делать.с асинхронной работой. Есть ли лучший способ дождаться этого, чем вызывать Thread.Sleep? Я'Я не слишком уверен, что 1000 мс всегда будет достаточно.

Ответы на вопрос(4)

Ваш ответ на вопрос