J'écris un morceau de code C# qui lance un programme d'installation et attend qu'il revienne avant de continuer avec d'autres choses.C# Détection des processus engendrés
Je rencontre des problèmes avec certains programmes d'installation qui génèrent d'autres processus avec le processus d'origine renvoyé avant la fin de l'installation. Y at-il un moyen d'attendre que tous les processus soient terminés?
Pour clarifier ici est le scénario que je vais avoir du mal avec:
- Lancement Installer1
- Installer1 fraye/lance un autre installateur (Installer2)
- de retour d'installation 1
- application pense installer a terminé mais Installer2 est toujours en cours d'exécution. Cela provoque des problèmes avec le flux de travail dans l'application.
Voici le code que je utilise au moment:
// 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;
Possédez-vous les processus engendrés? Par exemple. pouvez-vous modifier Installer2 si cela vous facilite la détection de l'achèvement? Ou est-ce que le programme d'installation2 est fourni par quelqu'un d'autre, ou vous ne savez même pas quels processus supplémentaires pourraient être générés et doivent gérer des processus générés arbitrairement? – itowlson
Nous possédons l'installateur particulier en question. Cependant, nous aimerions aussi être capable de gérer des processus générés arbitrairement. – tjjjohnson