2009-11-17 59 views
1

我正在使用MS Word COM API從C#打印Word文檔。見下面...爲什麼Word在文檔上調用Close()後沒有釋放我的文件?

internal void PrintWordFileUsingDefaultPrinter(System.IO.FileInfo file) 
    { 
     //Open the document. 
     object fileName = file.FullName; 
     Document doc = app.Documents.Open(
      ref fileName, 
      ref missing, 
      ref trueValue, 
      ref falseValue, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing); 

     //Send print job to the printer. 
     doc.PrintOut(
      ref trueValue, 
      ref falseValue, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing, 
      ref missing); 

     doc.Close(ref falseValue, ref missing, ref missing); 

    } 

你會看到我通過調用doc.Close()完成。然而,即使在調用這個Word後仍然鎖定我的文件,我無法進一步處理它。任何想法如何我可以強迫單詞釋放我的文件?

(除了關閉的Word程序本身?我不想這樣做,因爲我需要打印的文檔數量巨大,並且不希望重新打開每次字)

回答

0

您必須爲文檔的實例調用Marshal.ReleaseComObject才能發佈它。

例如Marshal.ReleaseComObject(doc);

您還需要釋放Word.Application的實例以從內存中釋放單詞應用程序實例。

+0

謝謝。問題是,我沒有釋放和退出Word應用程序實例,所以一箇舊的winword實例實際上鎖定了我的文件。 – willem 2009-11-17 15:02:13

0

你可以嘗試在完成處理後將對象doc設置爲null?

+0

當然,這隻會釋放指針,不做任何關閉?無論哪種方式,我嘗試,但沒有運氣:( – willem 2009-11-17 14:39:16

0

你確定它不是後臺打印?如果是這樣,你可以告訴它同步打印。是否省略打印關閉文件?

+0

有趣的想法。但不,我恐怕註釋掉printOut命令仍然有同樣的結果。 – willem 2009-11-17 14:42:22

相關問題