Winword.exe在我的应用程序中有多接近
本文关键字:接近 应用程序 exe 我的 Winword | 更新日期: 2023-09-27 18:32:16
-
当我启动我的应用程序并打开word文件时,我在任务管理器中看到3进程winword.exe。
在我调用"关闭"功能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",并且我需要在析构函数中关闭它们。
你在终结器(不同于析构函数)中执行此操作。终结器是不确定的,这意味着在它们运行时,类成员可能已经完成,因此将不再有效。
我将实现 Dispose 模式并显式控制您的单词 COM 对象的生存期。这个答案有很多很好的链接可能会对你有所帮助。
//要找出 WINWORD.exe 过程并将实时优先级设置为 WINWORD.exe这用于快速处理
Process[] proces = Process.GetProcessesByName("WINWORD");
foreach (Process proc in proces)
{
proc.PriorityClass = ProcessPriorityClass.RealTime;
}