C# 字互操作。 ((DocumentEvents_Event)document).关闭文档时不触发关闭

C# Word Interop. ((DocumentEvents_Event)document).Close is not firing when document is closed

如标题所述:((DocumentEvents_Event)document).Close关闭 word 文档时未触发。

var wordApp = new Microsoft.Office.Interop.Word.Application();
var document = wordApp.Documents.Open(pathToDocument);

...

document.Activate();
wordApp.Visible = true;
wordApp.Activate();

((DocumentEvents_Event)document).Close += OnDocumentClosed;

...

private void OnDocumentClosed()
{
...
}

我通过关闭 Word 本身来关闭 Word 文档。我尝试了 5 次中有 3 次有效,并且 OnDocumentClosed() 被调用。有谁知道我做错了什么?我需要它工作 5 次中的 5 次。我使用 Word 2016.

提前致谢!

此致,

帕兹

首先,你需要确定源对象是存活的。为了实现它,您需要在全局范围内声明源对象,这样它就不会被垃圾收集器清除。

// declare at the class level
var wordApp = new Microsoft.Office.Interop.Word.Application();
var document = wordApp.Documents.Open(pathToDocument);

// somewhere in the code
document.Activate();
wordApp.Visible = true;
wordApp.Activate();
((DocumentEvents_Event)document).Close += OnDocumentClosed;

// event handler
private void OnDocumentClosed()
{
...
}