Wie Sie einen Prozess erstellen, der überlebt seine Eltern

Ich versuche zu starten, einen externen updater Anwendung für eine Plattform, die ich entwickelt habe. Der Grund, warum ich möchte, um zu starten dieser updater ist denn meine Konfiguration Dienstprogramm, das die Griffe updates und Lizenz-Konfiguration für die Plattform freigegeben hat Abhängigkeiten zu anderen assemblies in den Ordner wo das update bereitgestellt wird. Also, ich kann zwar benennen Sie die Konfigurations-utility und überschreiben Sie ihn, wenn Sie den update kann ich nicht umbenennen oder überschreiben der DLLs, es hängt davon ab. Daher werden die externen updater.

Bin ich den Umgang mit allen dem update sammeln Logik in der Konfiguration-Dienstprogramm, dann den Versuch zu starten den updater zu handhaben die eigentliche Datei kopieren/überschreiben-Vorgänge. Offensichtlich, weil die Datei in Benutzung Probleme, ich brauche das Konfigurationsdienstprogramm zu verlassen direkt nach dem updater beginnt.

Das problem das ich habe ist, dass ich mit der standard-Prozess.Start-Methode starten Sie den updater, und sobald Sie das Konfigurationsprogramm beendet wird, hat der updater-Prozess getötet wird auch.

Gibt es irgendeine Möglichkeit, dass ich einen Prozess erstellen, der überlebt seine Eltern, oder starten Sie eine externe Anwendung ausgeführt werden können, ist darüber hinaus das Programm, das Sie ins Leben gerufen?

EDIT:

Scheinbar, in meinen updater, ich habe mich verrechnet die Anzahl der Kommandozeilen-Argumente, die übergeben werden. Weil dieses, der updater würde sofort aussteigen. Ich interpretiert dies bedeuten, dass die launcher-Anwendung war das töten der "child" - Prozess, wenn in der Tat, er war es nicht.

Antworten richtig sind.

  • Ich weiß, es ist eine Art rückwärts-denken, aber könnten Sie einen Prozess haben, das ist ganze Arbeit zu verwalten, starten Sie die Konfiguration-Dienstprogramm und Ihre Anwendung? So könnte man aktualisieren, die Anwendung und die Konfiguration-Dienstprogramm (falls erforderlich) separat und würde nicht haben, um sorgen über die Kind-Prozesse sterben, die mit Ihren Eltern (da die Eltern immer ausgeführt werden).
  • Ich hatte einen Fehler in meinem updater-code, gezwungen, es zu verlassen Sie unverzüglich. Ich nahm an, dies wurde von der "Start" - Prozess schließen. Ich aktualisiert meine Nachricht entsprechend. Gibt es eine Möglichkeit zu geben, selbst negative rep als Selbstbestrafung für so einen lächerlichen Fehler???
  • Können wir davon ausgehen, dass Sie mit C# / .net / Win32 und nicht-C# / Mono / *nix? Ich weiß nicht, ob Prozess funktioniert genauso wie in allen Umgebungen.
  • Ich habe aktualisiert die tags, das deutlich zu machen, guter Punkt!
InformationsquelleAutor Chris Carter | 2009-06-17
Schreibe einen Kommentar