Я пишу кусок кода C#, который запускает установщик и ждет его возвращения, прежде чем продолжить с другими вещами.C# Обнаружение порожденных процессов
У меня возникли проблемы с некоторыми установщиками, которые порождают другие процессы с исходным процессом, возвращаемым до того, как установка завершена. Есть ли способ, которым я могу дождаться завершения всех процессов?
Чтобы прояснить вот сценарий у меня возникают проблемы с:
- Launch Installer1
- Installer1 нерестится/запускает другой установщик (Installer2)
- Installer 1 возвращает
- Применение думает установки имеет но Installer2 все еще работает. Это вызывает проблемы с рабочим процессом в приложении.
Вот код, я использую в данный момент:
// launch installer
Process process = windowsApplicationLauncher.LaunchApplication(_localFilePath);
// wait for process to return
do
{
if (!process.HasExited)
{
}
}
while (!process.WaitForExit(1000));
if (process.ExitCode == 0)
{
_fileService.MoveFile(_localFilePath, _postInstallFilePath);
_notification.SetComplete(false);
return true;
}
return false;
У вас есть порожденные процессы? Например. можете ли вы изменить Installer2, если это облегчит вам обнаружение завершения? Или Installer2 поставляется кем-то другим, или вы даже не знаете, какие дополнительные процессы могут быть созданы и должны обрабатывать произвольные нерешенные процессы? – itowlson
У нас есть собственный конкретный установщик. Однако мы также хотели бы иметь возможность обрабатывать произвольные нерешенные процессы. – tjjjohnson