2016-08-02 35 views
0

Ich habe ein komplexes Konsolenprogramm für Datenmanipulation, die ein Schmerz ist zu verwenden.C#: Arbeiten mit separaten .exe

Ich versuche ein GUI-Wrapper-Programm zu erstellen, um die Benutzerfreundlichkeit zu erleichtern.

Im Moment öffne ich einen neuen Thread und benutze Process.Start() und nehme die Ausgabe auf.

Dies funktioniert gut, außer für ein Problem, Wie kann ich den Prozess auf Anfrage vom Benutzer abbrechen?

Angesichts der Tatsache, dass der Prozess CPU-intensiv ist und lange Laufzeiten haben kann, ist dies sehr wichtig.

Antwort

0

Verwenden Sie die Process.Kill() Methode:

foreach (var process in Process.GetProcessesByName("whatever")) 
{ 
    process.Kill(); 
} 

Wenn Sie nicht alle Instanzen von whatever töten wollen, dann Ihren Prozess beginnen:

process = Process.Start("whatever"); 

dann die Kill Methode aufrufen, wenn Sie wollen zu:

process.Kill(); 
+2

Der OP gestartet sollte den Prozess selbst, warum Ist er wieder auf der Suche? Wenn er einen Prozess beenden wollte, der von einem anderen Prozess gestartet wurde, wäre deine Antwort perfekt gewesen :) – Sidewinder94

+0

Nun, das war einfach. – user6667032

+0

So hat es funktioniert, was Sie wollten? Eine Sache jedoch, wenn es mehrere Instanzen von "was auch immer" Prozess gibt, wird es ** alle ** von ihnen töten. –

0

Angenommen, Sie haben beginnen, wie ein Verfahren unter

Process myProcess = Process.Start("myapp.exe"); 

dann können Sie den Vorgang kostenlos schließen

myProcess.Close(); 

dann den Prozess stoppen die Ressource up mit

myProcess.Kill();