12

MSWord ドキュメント パーサーが必要なアプリケーションを作成しています。

私は Microsoft.Office.Interop.Word.Document を使用してドキュメントからテキストを抽出していますが、doc.Close() を使用してもドキュメントをタスクマネージャーから見ると、winword.exe が強制終了されず、解析後に数十のドキュメントで、かなりのリソースが消費されます。

close() は間違った方法ですか?

これらのプロセスを適切に終了する方法について、私を助けて正しい方向に向けてください。=)

~~~更新~~~

すべての助けをありがとう。私は app.quit() を使用し、プロセスと問題の解決をチェックするループも実行しました! =)

4

5 に答える 5

19

Application.Quitを呼び出していますか?さらに Interop を行っているため、 RCW wrapperをリリースする価値があるかもしれません。

基本的に次のようなものです:

yourWordAppObject.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(yourWordAppObject);

一部の人々が使用することに注意してください: ReleaseComObjectしかし、いくつかの潜在的な落とし穴があります

于 2011-08-15T20:24:01.520 に答える
3

app.quit() を使用してアプリケーション インスタンスを終了する必要があります。Document.close() はドキュメントを閉じるだけです。また、処理が完了したら app.visible = true を設定して、他のすべてが失敗した場合にユーザーが自分で閉じることができるようにすることもお勧めします。

于 2011-08-15T20:34:16.960 に答える
3

app.Quit() を実行した後、 app = null; を実行する必要があります。私の経験から、これにより、残りのプロセスがぶらぶらするのを防ぐことができます。例外ハンドラでも必ず app.Quit() と app = null を実行してください。

于 2011-08-15T20:50:01.630 に答える
2

オブジェクトで呼び出す必要があるプロセスを終了する場合はQuithttp://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.applicationclass.quit%28v=office.14%を参照してください。 29.aspxApplication

于 2011-08-15T20:18:15.650 に答える
0

close は、単語内で開いているドキュメントを処理するだけだと考えています。1 つのアプリケーションで複数の Word 文書を開くことができることに注意してください。dispose メソッドを試すか、word オブジェクトの quit/exit メソッドを調べてみてください (しばらく経ったことを思い出せません)。

于 2011-08-15T20:09:03.790 に答える