アプリを起動してWordファイルを開くと、タスクマネージャーに3つのプロセスwinword.exeが表示されます。
'close'関数1を呼び出した後、プロセスwinword.exeが閉じられました。デストラクタでworddoc.close()またはwordapp.quit()を呼び出すと、「基になるRCWから分離されたCOMオブジェクトを使用できません」という例外が発生しました。
public class WordHelper
{
private object nullobj = System.Reflection.Missing.Value;
public string context = "";
Microsoft.Office.Interop.Word.Document doc = new Document();
Microsoft.Office.Interop.Word.Application wordApp = new Application();
public WordHelper(string FileName)
{
//Open word file
}
//somefunction fo work with file
public void CloseWord()
{
doc.Close();
wordApp.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(wordApp);
}
~WordHelper()
{
//i got exception
doc.Close();
wordApp.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(wordApp);
}
}
クラスの呼び方
WordHelper wddoc = new WordHelper("C:\\Test Word\\Test.docx");
wddoc.CloseWord(); //this line i use and can close 1 process not 3
//One process close after i close application
最後に、アプリケーションによって開かれたすべてのwinword.exeを閉じ、デストラクタで閉じたいと思います。最後に、アプリケーションによって開かれたすべての「winword.exe」を閉じる必要があり、デストラクタでそれらを閉じる必要があります。