Как повысить производительность открытия Microsoft Word при автоматизации из C #? - PullRequest
1 голос
/ 20 марта 2010

У меня есть шаблон Microsoft Word, который я автоматически заполнил, заполнив его поля из своего приложения, и когда пользователь запрашивает печать, я открываю этот шаблон.

Но создаю приложение Word каждый раз, когда пользователь запрашивает печать после заполненияПоля очень дороги и могут привести к некоторой задержке при открытии шаблона.Поэтому я решил кешировать ссылку на Word, а затем просто открыть новый заполненный шаблон.

Это решило проблему с производительностью, так как открытие файла дешевле, чем воссоздание Word каждый раз, но это работает только тогда, когда пользователь просто закрываетдокумент не все приложение Word.Когда это происходит, моя ссылка на Word становится недействительной и возвращается с исключением: « Сервер RPC недоступен » при следующем запросе открытия шаблона.Я пытался подписаться на событие BeforeClosing, но это приводит к выходу из Word и закрытию документов.

Мой вопрос заключается в том, как узнать, закрывает ли Word документ или завершает работу всего приложения, поэтому я правильно выбираюдействие или любой намек на другое направление мышления о повышении производительности открытия шаблона Word.

1 Ответ

3 голосов
/ 20 марта 2010

Я не знаю, как правильно подписаться на закрывающие события Word. Но кажется, что вы можете выбрать один из вариантов - оптимистично предположить, что Word не закрыт, и использовать свой маршрут кэширования. На высоком уровне поймать тип Exception, брошенный при закрытии Word. Если вы столкнулись с этим исключением, удалите ссылку на слово и повторите операцию, как в первый раз.

Вы не сможете получать кеширование таким образом все время. Но вы сможете воспользоваться ситуациями, когда пользователь только закрывает документ.

...