私は、Microsoft Wordを読み込んでいくつかの基本的な編集(検索&を見つける)といくつかの自動保存を実行するwinformプログラムを持っています。Microsoft Word Interopのパフォーマンスの問題
既存の単語テンプレートを読み込みます。これも基本テキストです。
interopのコードは次のとおりです。文書一度
try
{
// Is Word running?
WordApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application") as Microsoft.Office.Interop.Word.Application;
WordApp.Visible = true;
return WordApp;
}
catch (COMException ce)
{
WordApp = null;
if (ce.ErrorCode == unchecked((int)0x800401E3))
WordApp = new Microsoft.Office.Interop.Word.Application();
WordApp.Visible = true;
return WordApp;
}
は、彼らが必要なものを、ユーザがタイプオープンしているが、ページの後またはテキストのようにパフォーマンスが本当に遅くなりますことが指摘されています。ユーザーの入力に時間がかかります。
私は初期にはfind/replaceコードに関するいくつかの問題に起因すると考えていたので、テンプレートをロードするコードとは別にすべてをコメントアウトしました。
WordApp = WordEdit.GetWord(); //Class & Method calling interop code
WordApp.Documents.Add(AppDomain.CurrentDomain.BaseDirectory + "\\Templates\\" + DocType + ".dot");
//set Active Document
WordDoc = WordApp.ActiveDocument;
パフォーマンスはまだ低いです。
私はCOMをリリースして物事をnullに設定すると考えましたが、これもまた何の効果もありませんでした。
System.Runtime.InteropServices.Marshal.ReleaseComObject(WordApp);
WordApp = null;
WordDoc = null;
私のアプリでは、一般的にはシステムの速度が遅くなっている可能性があります。アプリケーションを終了しても、ロードしているWordアプリケーションを引き続き使用すると、パフォーマンスはまだまだ低下します。新鮮なWordアプリケーションを(手動で)起動すると、これは完全に機能します。だから私のアプリケーションが単語をロードする方法と関係があります。私のアプリケーションはシステムリソースに影響を与えず、現在はテンプレートをロードする以外の何もしないように設定されています。
Wordを使用する別の方法(interopを使用する別の方法)またはパフォーマンスを向上させる方法はありますか?