Ich schlage vor, dass Sie ein globales Prozessobjekt pflegen können, das die Wortanwendung darstellt, da es nur eine Instanz von Word. exe ausführen wird, müssen Sie nur dieses Process-Objekt zu überwachen, und während es beendet, löschen Sie einfach alle Dateien. Und ich schlage vor, dass Sie alle geöffneten Dateinamen in einer globalen Auflistung speichern können. Wenn der Prozess beendet wird, können Sie alle Elemente in der Auflistung löschen. Und wenn eine neue Datei geöffnet ist, fügen Sie sie der Sammlung hinzu. Ich hoffe, das hilft Freitag, 26. Oktober 2007 um 08:08 Uhr Alle Antworten Du hast gesagt, Process. Start (inf).WaitForExit () erzeugt NullReferenceException, könnten Sie diese Ausnahme bitte in mehr Details decken Könnten Sie bitte die Ausnahme in mehr Details Sie können Post seine Stack-Trace. Und innere Ausnahme hier. Sie können den Code wie folgt schreiben und noch einmal versuchen: Process proc Process. Start (inf) Thursday, October 25, 2007 11:19 AM Nun, tatsächlich Ihren Code tut das gleiche wie meine, außer, dass ein bisschen länger ist. Wenn ich eine doc-Datei starten, wird der WINWORD-Prozess gestartet und in Ihrem Fall wird die proc-Variable initialisiert. Ihre zweite Zeile Code blockiert den Thread (Ich benutze Threading, damit der Benutzer so viele Dateien starten kann, wie er will), bis der Benutzer schließt die doc-Datei. Aber es könnte auch passieren, dass der Benutzer eine neue doc-Datei startet (die erste ist noch geöffnet). In diesem Fall Process proc Process. Start (inf) ist der proc null, da wir bereits einen laufenden WINWORD-Prozess haben. Also Ihre zweite Zeile des Codes wird am Ende mit Null-Referenz-Ausnahme zu. Ich schlage vor, dass Sie ein globales Prozessobjekt pflegen können, das die Wortanwendung darstellt, da es nur eine Instanz von Word. exe ausführen wird, müssen Sie nur dieses Process-Objekt zu überwachen, und während Es beendet, löschen Sie einfach alle Dateien. Und ich schlage vor, dass Sie alle geöffneten Dateinamen in einer globalen Auflistung speichern können. Wenn der Prozess beendet wird, können Sie alle Elemente in der Auflistung löschen. Und wenn eine neue Datei geöffnet ist, fügen Sie sie der Sammlung hinzu. Hoffe, dass dies hilft Freitag, 26. Oktober 2007 08:08 Microsoft führt eine Online-Umfrage durch, um Ihre Meinung über die Msdn-Website zu verstehen. Wenn Sie sich für eine Teilnahme entscheiden, wird Ihnen die Online-Umfrage präsentiert, wenn Sie die Msdn-Website verlassen. Möchten Sie teilnehmen. WaitForExit-Methode () WaitForExit () stellt den aktuellen Thread ab, bis der zugehörige Prozess beendet wird. Es sollte aufgerufen werden, nachdem alle anderen Methoden auf den Prozess aufgerufen werden. Verwenden Sie das Ereignis Exited, um zu verhindern, dass der aktuelle Thread blockiert wird. Diese Methode weist die Prozesskomponente an, eine unendlich lange Zeit zu warten, damit der Prozess und die Ereignisbehandlungsroutinen beendet werden können. Dies kann dazu führen, dass eine Anwendung nicht mehr reagiert. Zum Beispiel, wenn Sie Closemainwindow für einen Prozess aufrufen, die eine Benutzeroberfläche hat, um die Anforderung an das Betriebssystem beenden das zugehörige Verfahren nicht behandelt werden können, wenn der Prozess geschrieben wird nie seine Meldungsschleife eingeben. In. NET Framework 3.5 und früheren Versionen wartete die WaitForExit () - Überladung für MaxValue Millisekunden (ca. 24 Tage), nicht unbegrenzt. Auch frühere Versionen warteten nicht, bis die Ereignishandler beendet wurden, wenn die volle MaxValue-Zeit erreicht war. Diese Überlastung stellt sicher, dass alle Verarbeitung abgeschlossen ist, einschließlich der Handhabung von asynchronen Ereignissen für die umgeleitete Standardausgabe. Sie sollten diese Überladung nach einem Aufruf der WaitForExit (Int32) - Uberladung verwenden, wenn die Standardausgabe auf asynchrone Ereignisbehandlungsroutinen umgeleitet wurde. Wenn ein zugehöriger Prozess beendet wird (dh, wenn er vom Betriebssystem durch eine normale oder abnormale Beendigung beendet wird), speichert das System Verwaltungsinformationen über den Prozess und kehrt zu der Komponente zurück, die WaitForExit () aufgerufen hat. Die Process-Komponente kann dann auf die Informationen zugreifen, zu denen auch die ExitTime gehört. Indem Sie den Handle für den beendeten Prozess verwenden. Da der zugehörige Prozess beendet ist, weist die Handle-Eigenschaft der Komponente nicht mehr auf eine vorhandene Prozessressource hin. Stattdessen kann der Handle nur verwendet werden, um auf die Betriebssystem-Informationen über die Prozessressource zuzugreifen. Das System ist sich bewusst, dass Handles für verlassene Prozesse, die nicht von Process-Komponenten freigegeben wurden, bewahrt werden, sodass es die ExitTime - und Handle-Informationen im Speicher beibehält, bis die Prozesskomponente die Ressourcen spezifisch freigibt. Wenn Sie Start für eine Prozessinstanz aufrufen, rufen Sie deshalb Close auf, wenn der zugehörige Prozess beendet wurde und Sie keine Verwaltungsinformationen mehr benötigen. Schließen beendet den Speicher, der dem beendeten Prozess zugewiesen ist.
Comments
Post a Comment