Word OLE Automation - скрытый и устойчивый к памяти экземпляр Word для ускорения загрузки документов - PullRequest
0 голосов
/ 04 июля 2019

Изначально являвшийся инженером-программистом в течение многих лет в крупных проектах по разработке программного обеспечения, сейчас я на протяжении 1,5 лет отвечаю за обслуживание и разработку старого, большого, сложного и плохо документированного модуля автоматизации слова (VBA) в рамках стандартного администрирования. применение в правительственной и судебной среде. Все манипуляции с документами (создание, включая слияние данных из БД, обновление, удаление и т. Д.), А также хранение (как BLOB-объектов в БД) контролируются основным приложением с использованием автоматизации OLE.

Фон

Приложение позволяет включить функцию так называемого «косвенного управления OLE», которая, по-видимому, не является официальным названием (никаких выводов в Google). Этот вариант имеет два преимущества. Если включено,

  • улучшает производительность при загрузке слова
  • и предоставляет приложению свою собственную среду частных слов без вмешательства извне

Это делается путем запуска основного скрытого экземпляра Word прямо при открытии первого документа. Сам фактический и любой другой документ загружается в следующий экземпляр Word, который присоединен к первичному скрытому. Закрытие документа закроет его сеанс Word как обычно, но основной сеанс Word остается открытым и обычно невидимым, пока приложение не будет закрыто в целом. Основной сеанс Word сохраняет макросы, предварительно загруженные шаблоны и шаблоны автотекста, загруженные в оперативную память.

Пока открыт хотя бы один документ, вы увидите в диспетчере задач Windows:

  • на вкладке Процесс: как обычно, один экземпляр Word и прикрепленный к нему открытый документ
  • на вкладке "Сведения": основной скрытый экземпляр Word плюс, кроме того, один экземпляр Word для каждого открытого документа

Если в настоящий момент нет открытых документов, вы увидите в диспетчере задач Windows:

  • на вкладке Процесс: нет экземпляра Word
  • на вкладке «Сведения»: только этот основной скрытый экземпляр Word (вы можете узнать это по PID)

Отсутствие документации

В течение некоторого времени мы получаем отчеты о проблемах от клиентов, которые обновили Office 2010 до 2016 года. Они жалуются на плохую производительность при создании новых документов. Я заглянул в код и нашел несколько возможных причин такого поведения в отношении последовательности вызовов при обработке описанной выше концепции. Но прежде чем касаться этого кода, я хотел бы узнать больше об этой концепции в целом. Можете ли вы дать мне любую подсказку, ссылку или документ, предоставив официальное описание / документацию по этой концепции наличия скрытого и стойкого к памяти экземпляра Word.

ТИА! Питер

...