2010-12-03 29 views
0

J'utilise VS2005 et j'ai besoin de créer de nombreux fichiers .doc. Mon ordinateur (Intel c2d6600 avec 2 Go de RAM) peut convertir avec 10 fichiers/minute, il est très lent pour moi. Que dois-je faire pour améliorer la performance?Interopérabilité très lente avec Word dans l'application C#

Mon code:


oWord = new Word.Application(); 
oMissing = System.Reflection.Missing.Value; 
oDoc = this._oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing); 

... 
//Do something 
... 

//save rtf 
object fileName = this.FileRtf; 
object fileFormat = Word.WdSaveFormat.wdFormatRTF; 
object savechanges = false; 
oDoc.SaveAs(ref fileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
oWord.Quit(ref savechanges, ref oMissing, ref oMissing); 

Répondre

4

Mes pouvoirs de débogage psychiques me dire que vous avez besoin d'optimiser le code ci-dessous:

... 
//Do something 
... 
+0

Word.Paragraph oPara; ...; oPara.Range.InsertParagraphAfter() fonctionne lentement, mais j'ai beaucoup de ces opérations dans chaque document. :( – mystdeim

2

Essayez de réduire le nombre d'appels à

oWord = new Word.Application(); 
//and 
oWord.Quit(ref savechanges, ref oMissing, ref oMissing); 

En d'autres termes, appelez-les une fois et utilisez une instance de Word pour plusieurs fichiers.

+0

Merci, je l'ai déjà fait, mais la conversion est encore lente. – mystdeim

1

Tout d'abord, vous devez profiler votre application pour savoir où le temps est passé.

Pour la liste des profileurs, voir SO question.