Tuesday, 11 July 2017

Prozess Waitforexit Ausnahme


Denn wenn Sie einen Prozess indirekt starten, erhalten Sie nicht Process-Objekt (dann in Ihrem Fall ist immer null und zweite Zeile wirft eine Ausnahme). Lassen Sie mich erklären, was ich meine mit indirekt. Wenn Sie nicht eine ausführbare Datei angeben, aber Sie geben ein Dokument (oder eine Ressource) dann itll durch ein Shell-Verb ausgeführt werden. In diesem Fall kann ein vorhandenes Verfahren (wieder) verwendet werden. In diesem Fall wird Process. Start () null zurückgeben. Erstellen Sie ein leeres Worddokument c: test. docx. Schließen Sie alle Word-Instanzen. Führen Sie Process. Start aus (c: test. docx) Liefert eine Process-Instanz Execute Process. Start (c: test. docx) Liefert null Kann man einfach diese AFAIK Sie cant, weil Prozess nutzt ShellExecuteEx mit einem SHELLEXECUTEINFO Struktur, um den Prozess zu starten. Lesen der SHELLEXECUTEINFO-Dokumentation für hProcess-Feld youll sehen, dass: Ein Handle für die neu gestartete Anwendung. Dieses Mitglied wird zurückgesetzt und ist immer NULL, wenn fMask nicht auf SEEMASKNOCLOSEPROCESS gesetzt ist. Selbst wenn fMask auf SEEMASKNOCLOSEPROCESS gesetzt ist, wird hProcess NULL sein, wenn kein Prozess gestartet wurde. Wenn beispielsweise ein zu startendes Dokument eine URL ist und eine Instanz von Internet Explorer bereits ausgeführt wird, wird das Dokument angezeigt. Es wird kein neuer Prozess gestartet, und hProcess wird NULL sein. Hinweis ShellExecuteEx gibt nicht immer einen hProcess zurück, auch wenn ein Prozess als Ergebnis des Aufrufs gestartet wird. Beispielsweise wird ein hProcess nicht zurückgegeben, wenn Sie SEEMASKINVOKEIDLIST verwenden, um IContextMenu aufzurufen. Beachten Sie, wenn youre einen neuen Prozess, nur um eine URL zu öffnen und erhalten Sie eine serverseitig generierte Datei dann sollten Sie folgen Damiens Vorschlag und verwenden Sie ein WebClient. DownloadFile ().C (C Sharp) gtInvalidOperationException in Process. WaitForExit Die Anforderung ist es, zu schließen Eines durch einen Prozess geöffneten Wortdokuments. Es gibt einige Stück Code, die ausgeführt werden muss, nachdem das Dokument geschlossen ist. Mit Process. Start () Dokument geöffnet ist, habe ich process. WaitForExit () verwendet, um die weitere Ausführung zu stoppen, bis das Dokument geschlossen wird. Aber sobald das Dokument geschlossen ist, wirft Process. WaitForExit () InvalidOperationException-Es ist kein Prozess der Objektausnahme zugeordnet. Auch bei der Verwendung von process. Haited propertyprocess. WaitForInputIdle () wird dieselbe Ausnahme ausgelöst. Diese Ausnahme wird während des Release - und Debug-Modus ausgelöst. Jede Idee, warum diese Ausnahme auftritt Am 6. September, 9.18 Uhr, Sangeetha ltSangee. Discussions. microsoftgt schrieb: gt Die Anforderung ist, das Schließen eines Wortes zu ermitteln, das durch einen Prozess geöffnet wird. Gt Es gibt einen Code, der ausgeführt werden muss, nachdem das Dokument geschlossen ist. Gt gt Mit process. Start () Dokument geöffnet ist, habe ich process. WaitForExit () verwendet, um die weitere Ausführung zu beenden, bis das Dokument geschlossen wird. Gt gt Sobald das Dokument geschlossen ist, wirft Process. WaitForExit () den Befehl gt quotInvalidOperationException-Kein Prozess ist der Objektquot-Ausnahme zugeordnet. Gt gt Auch bei Verwendung von process. Haited propertyprocess. WaitForInputIdle () wird dieselbe gt-Ausnahme ausgelöst. Gt gt Diese Ausnahme wird während des Release - und Debug-Modus ausgelöst. Gt gt Irgendeine Idee, warum diese Ausnahme auftritt. Ich denke nicht, dass Sie auf die korrekte Prozessvariable warten. Stellen Sie sicher, dass Sie arent vergessen, das Ergebnis von Process. Start () einer Variablen vom Typ Process zuzuordnen. Prozess p1 neu Prozess () Prozess p2 Prozess. Start (quotnotepad. exequot) p1.WaitForExit () lt - werfen p2.WaitForExit () lt-- werfen nicht. oder. P1.StartInfo neue ProcessStartInfo (quotnotepad. exequot) p1.Start () p1.WaitForExit () lt-- werfen nicht

No comments:

Post a Comment