Piszę fragment kodu C#, który uruchamia instalator i czeka na jego powrót, zanim przejdzie dalej.Wykrywanie spawdzonych procesów C#
Mam problem z niektórymi instalatorami, które spawnują inne procesy z pierwotnym procesem, który powrócił, zanim instalacja zakończy się. Czy jest jakiś sposób, że mogę poczekać, aż wszystkie procesy zostaną zakończone?
Aby wyjaśnić tutaj scenariusz mam problemy z:
- uruchamianie Installer1
- Installer1 ikra/uruchamia kolejną instalatora (Installer2)
- Installer 1 zwraca
- Zastosowanie myśli zainstalować ma zakończone, ale Installer2 nadal działa. Powoduje to problemy z przepływem pracy w aplikacji.
Oto kod używam w tej chwili:
// 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;
Czy jesteś właścicielem spawnowanych procesów? Na przykład. czy możesz zmodyfikować Installer2, jeśli to ułatwiłoby ci wykrywanie ukończenia? Czy instalator2 jest dostarczany przez kogoś innego, czy nie wiesz nawet, jakie dodatkowe procesy mogą zostać uruchomione i które wymagają obsługi dowolnych procesów odradzania? – itowlson
Posiadamy własny konkretny instalator. Jednak chcielibyśmy również móc obsługiwać dowolne procesy odradzania. – tjjjohnson