Sto scrivendo un pezzo di codice C# che avvia un programma di installazione e attende che venga restituito prima di continuare con altre cose.C# Rilevamento di processi generati
Ho problemi con alcuni programmi di installazione che generano altri processi con il processo originale che ritorna prima della fine dell'installazione. C'è un modo che posso aspettare fino al termine di tutti i processi?
Per chiarire Ecco lo scenario che sto avendo problemi con:
- lancio Installer1
- Installer1 genera/lancia un altro installatore (Installer2)
- Installer 1 restituisce
- Applicazione pensa installare ha finito ma Installer2 è ancora in esecuzione. Ciò causa problemi con il flusso di lavoro nell'app.
Ecco il codice che sto utilizzando in questo momento:
// 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;
Sei proprietario dei processi generati? Per esempio. puoi modificare Installer2 se questo ti renderebbe più facile il rilevamento del completamento? Oppure l'Installer2 è fornito da qualcun altro, o non sai nemmeno quali processi aggiuntivi potrebbero essere generati e devi gestire processi generati arbitrariamente? – itowlson
Siamo proprietari del particolare programma di installazione in questione. Tuttavia vorremmo anche essere in grado di gestire processi generati arbitrariamente. – tjjjohnson