Я работаю с программой на C#, которая использует Microsoft Office Interop, позволяя вам по существу программным образом использовать Microsoft Word, Excel и PowerPoint.Microsoft Office Interop Timing Out
Один из неудачных аспектов, с которыми я столкнулся, заключается в том, что иногда программа поднимает диалоговое окно, которое приостанавливает код. Это может произойти, например, если вдруг код не сможет сохранить в выбранном вами месте, что означает, что вся ваша программа приостановлена, даже если эта проблема будет исправлена позже.
Есть много других обстоятельств, при которых может быть поднято дополнительное диалоговое окно.
Так что я намерен реализовать какой-то механизм таймаута для этого, благодаря чему я могу убить экземпляр Interop, а не привязать всю свою программу. Может ли кто-нибудь предложить способ сделать это? На данный момент он обматывает вызовы Interop в System.Action
и прерывает этот поток по истечении заданного времени, но мне интересно, есть ли лучший способ.
Я делал такие вещи в прошлом. Единственное, что нужно сделать, это прочитать код VBA, который вы автоматизируете, и проверить его, чтобы вы знали, когда и где появляются диалоговые окна, и почему. Затем вы можете запрограммировать его. Поверьте мне, это облегчит вашу жизнь в долгосрочной перспективе! – JMK
Кроме того, Office Interop не предназначен для использования без присмотра, идея заключается в том, что ваш конечный пользователь видит эти диалоговые окна и взаимодействует с ними соответствующим образом. Если вы хотите автоматическую автоматизацию Office, вы можете посмотреть OpenXML. – JMK