Je suis très nouveau à C # afin que ma question puisse sembler ridicule. Je développe une application qui doit parfois exécuter FFMPEG. Comme vous devinez, ce processus FFMPEG doit être tué lors de son application hôte était fermé. J'utilise ce code pour cette tâche:
AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit); private void OnProcessExit(object sender, EventArgs e) { proc.Kill(); }
3 Réponses :
Je pense essayer ce
Je recommande d'utiliser des objets de travail (selon la suggestion Scott Miller). Une autre option peut avoir une application spéciale d'assistance pour votre application, qui suit: p>
Mais les objets de travail sont vraiment une meilleure option, il est spécifiquement fait pour cette p>
Laissez votre programme d'hôte Soumettre son identifiant de programme en tant que paramètre, puis écouter si le programme sort.
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { static class Program { [STAThread] static void Main(string[] args) { if (args.Length != 0) new System.Threading.Thread( new System.Threading.ParameterizedThreadStart(handelexit)).Start(args[0]); // your code here } static void handelexit(object data) { int id = System.Convert.ToInt32(data.ToString()); System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(id); while (!p.HasExited) System.Threading.Thread.Sleep(100); System.Environment.Exit(0); } } }
Cette question parle de tuer des processus enfants lorsque leur parent est tué.
Merci, Scott Miller, [this] [1] La méthode est tout ce dont j'ai besoin pour résoudre mon problème. [1]: Stackoverflow.com/Questtions/3342941/...
Non, c'est une mauvaise idée. Essayer de faire quelque chose de raisonnable lorsque l'utilisateur fait quelque chose de déraisonnable est juste un effort gaspillé. Vous n'avez aucune idée pourquoi i> l'utilisateur a décidé de tuer votre programme comme celui-ci. Mais vous supposez généralement que ce n'est pas parce que votre programme fonctionne toujours correctement. Les chances que tout ce que vous avez l'intention de faire pour tuer FFMPEG viendra bien fin. Les objets de travail ne sont pas la solution non plus, ils se sont cassés mal à Vista. Maintenant, vous avez deux problèmes.