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 мс всегда будет достаточно.