【发布时间】:2019-11-09 18:26:08
【问题描述】:
我有一个使用 Word 文件模板生成报告的应用程序。应用程序将使用用户数据库记录提供的详细信息填充模板。我正在使用远程桌面将我的应用程序运行到另一台服务器。
我的问题是WINWORD.EXE进程无法终止,报告生成完成后仍留在任务管理器中(将报告保存到数据库并删除生成的文件)。
登录服务帐户后,WINWORD.EXE 进程正常终止,并从任务管理器列表中删除。注销时,WINWORD.EXE 仍保留在列表中。当多个 Word 进程未终止时,这可能会导致 Out-of-Memory-Exception。
Word 报告是使用 Microsoft.Office.Interop.Word 生成的,版本=12.0.0.0。
以下是保存新文件、关闭 Word 应用程序、保存报表和删除生成文件的代码:
Marshal.releaseComObject(rng)
Dim strFileName As String = comm.GenerateFileName(strUser_id, strVPN) & ".docx"
' Save the document.
Dim filename As Object = Path.GetFullPath(strNewFilePath & strFileName)
newDoc.SaveAs(FileName:=filename)
' Close.
Dim save_changes As Object = False
newDoc.Close(save_changes)
WordApp.Quit(save_changes)
Marshal.ReleaseComObject(newDoc)
Marshal.ReleaseComObject(WordApp)
rng= Nothing
newDoc = Nothing
WordApp = Nothing
' Let GC know about it
GC.Collect()
' Save the file to database
SaveFormat(Filename, strUser_Id, strFamilyId, strVPN, DateTime.Now.ToString(), "application/vnd.ms-word", br_id, "doc")
If File.Exists(filename) then
File.Delete(filename)
End If
我仍在研究这里的不同工作。
在 Excel 中,我们通过使用 HWND 属性和 GetProcessById 类获取打开的 Excel 实例的进程 ID 来获得解决方案。
我在某处读到 Word 2013 及更高版本具有 Application.HWND 属性。
这是真的吗? Word 是否有 HWND 属性?
【问题讨论】:
标签: .net vb.net ms-word interop office-interop