Nachdem ich viel nach diesem Problem gesucht habe, sehe ich immer noch Probleme damit, zu überprüfen, ob der laufende Prozess beendet ist oder nicht. Wenn der Benutzer in der GUI auf die Schaltfläche "Los" klickt, wird das Programm etwa 5 Sekunden lang ausgeführt und dann geschlossen. Wenn es fertig ist, möchte ich etwas tun (z. B. grüne Markierung in der GUI).
Mein Problem ist, dass 'GetProcessesByName' das Programm scheinbar nicht sehen kann, was merkwürdig ist, weil ich es im Taskmanager sehe. Der Programmname ist quartus_pgm.exe
. Siehe den folgenden Code, ich habe quartus_pgm
oder quartus_pgm.exe
oder quartus_pgm.exe32
ausprobiert (wie im Task-Manager zu sehen), aber nichts!
Wenn ich 'cmd' setze, sieht es es (das quartus_pgm wird aus dem cmd entfernt), aber es ist nicht das, wonach ich suche. Ich habe verschiedene Methoden ausprobiert:
%Vor%oder dieser:
%Vor%oder dieser:
%Vor% Versuchen Sie, .exe
part zu entfernen.
Von hier :
Der Prozessname ist ein benutzerfreundlicher Name für den Prozess, z. B. Outlook, das schließt die .exe-Erweiterung oder den Pfad
nicht ein
AKTUALISIEREN
Versuchen Sie, den gesamten Prozess auf Ihrem Computer aufzulisten, suchen Sie nach dem Prozessnamen quartus_pgm
.
Gibt es eine Chance, dass diese Methode die Groß- und Kleinschreibung berücksichtigt? Wenn Sie die Prozesse durchlaufen, finden Sie es?
%Vor% Da Sie den Prozess bereits selbst starten, warum behalten Sie nicht einfach die Process
Referenz? Dann kannst du einfach
(Vergessen Sie nicht, dass Sie process.Refresh
aufrufen müssen, um sicherzustellen, dass die Eigenschaft HasExited
korrekt aktualisiert wird)
Oder warten Sie einfach auf den Wait-Handle (idealerweise mit asynchronem Code).
Tags und Links c#