Il existe plusieurs options différentes. la processus qu'il commence:
private Stack<Process> _startedProcesses = new Stack<Process>();
private void StartChildProcess(string fileName)
{
Process newProcess = new Process();
newProcess.StartInfo = new ProcessStartInfo(fileName); ;
newProcess.Start();
_startedProcesses.Push(newProcess);
}
Lorsque l'application se ferme, vous pouvez appeler une méthode qui fermera tout a commencé des processus enfants qui sont encore en cours d'exécution. Vous pouvez utiliser ceci avec la méthode Kill ou en appelant les méthodes CloseMainWindow et Close. CloseMainWindow/Close effectuera un gros plus gracieux (si vous commencez le Bloc-notes et il y a des modifications non enregistrées, tuer les perdra, CloseMainWindow/Close fera demander le bloc-notes si vous souhaitez enregistrer):
private void CloseStartedProcesses()
{
while (_startedProcesses.Count > 0)
{
Process process = _startedProcesses.Pop();
if (process != null && !process.HasExited)
{
process.CloseMainWindow();
process.Close();
}
}
}
voir ce lien http: //stackoverflow.com/questions/169483/c-win32-notify-when-separate-window-is-closing-closed –
Cela fait référence à une tâche similaire, mais opposée, (fermer l'application actuelle lorsqu'une autre fenêtre se ferme). L'article CodeProject lié ici devrait cependant être utile. – Noldorin