C# Word Interop. ((DocumentEvents_Event) документ) .Close не запускается, когда документ закрыт - PullRequest
0 голосов
/ 05 мая 2020

как сказано в заголовке: ((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. Он работает 3 из 5 раз, когда я пытаюсь, и вызывается OnDocumentClosed(). Кто-нибудь знает, что я сделал не так? Мне нужно, чтобы он работал 5 раз из 5. Я использую Word 2016 .

Заранее спасибо!

С уважением,

parzi

1 Ответ

0 голосов
/ 05 мая 2020

Прежде всего, вам нужно убедиться, что исходный объект жив. Для реализации этого вам необходимо объявить исходный объект в глобальной области видимости, чтобы он не перемещался сборщиком мусора.

// 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()
{
...
}

...