Wie Prozess beenden in C#, wissen, das mit dem Namen?

Ich habe ein programm läuft, dass eine andere (nennen wir die erste app, die Stater und der zweiten app - Arbeiter).

Benutze ich

process.start();
process.waiForExit();
process.Close();

in der Starter.

Aber wenn der Starter ist gezwungen zu schließen, während der Wartezeit für Arbeiter (für einige extern Grund -) Arbeiter werden immer noch in den Prozessen, blockieren, Dateien, Essen, Speicher, usw.

So, ich möchte, um zu überprüfen, ob Arbeitnehmer, die bereits laufen, bevor ich werde versuchen, es zu starten.
Ich habe versucht Prozess.GetProcessesByName("worker.exe") aber kein Glück (auch wenn ich sehen kann, Arbeitnehmer, die im Task-Manager).

Ich habe gesehen, wie einige Themen hier über prüfen jedes Prozesses im Speicher für die Module, aber immer noch, ich weiß schon, das die Ausführung der Datei-ich hoffe, um zu vermeiden, dass solche Lösung.

Irgendwelche Tipps?

Dein Titel war etwas irreführend. Ich dachte, Sie wollten verbergen das stimmt mit dem Namen des Start-Prozess für einige obskure Grund 🙂
Tut Starter tatsächlich beginnen Worker? Wenn dem so ist, wissen Sie alle Prozess-IDs (durch Process.Id) der Arbeiter. Sie können (viel zuverlässiger) behandeln von ID.
nicht der Prozess, durch den Namen. Was passiert, wenn eine weitere nicht-Anwendung auch startet einen Prozess namens worker.exe?
Und mal ehrlich, @Christian.K, mit einem Namen wie Worker ist, wird es traurig und einsam. Ich bedaure es schon.
Setzen Sie Ihren Prozess in einem using-block verwenden, so dass, wenn der starter-Prozess nicht normal beendet, es werden noch entsorgen den Arbeitsprozess zu befreien, alle Ressourcen verbrauchen.

InformationsquelleAutor Pavel Oganesyan | 2012-03-13

Schreibe einen Kommentar