Вызов метода никогда не возвращается - PullRequest
0 голосов
/ 17 декабря 2008

Я работаю с компонентом COM. Существует метод, который выполняет этот вызов компонента, и этот метод используется в моем приложении много раз, для каждого обрабатываемого документа вызывается этот метод.

Одна странная вещь случается иногда внезапно, не имеет значения, сколько документов обрабатывается, это может произойти после обработки 60, 100 или 300 документов или просто не произойти. Странная вещь: вызов компонента не возвращается. Метод остается застрявшим в строке вызова. Знаете ли вы какие-либо особенности COM, которые могут быть причиной этой проблемы?

1 Ответ

1 голос
/ 18 декабря 2008

Из вашего вопроса я понимаю, что вы делаете COM-автоматизацию с документами. Если ваш COM-объект является приложением для обработки документов (будет ли MS Office правильным выбором?), Возможно, приложение просто блокируется всплывающим окном.

Это явление происходит довольно часто, когда вы автоматизируете, например, Word или Excel. Вы должны сделать несколько вещей, чтобы обойти эту проблему (я говорю о MS Word здесь):

  • отключить оповещения, настроив Application.DisplayAlerts соответственно
  • установите все продукты, чтобы избежать появления всплывающих окон установщика Windows, запрашивающих отсутствующие функции
  • реализовать механизм тайм-аута, который убьет приложение, если какой-либо модальный диалог запрашивает ввод данных пользователем. Причиной этого является то, что существуют определенные типы всплывающих окон, которые не могут быть отключены (если вам нужна дополнительная информация, пожалуйста, спросите).
...