2008-08-13 2 views

ответ

2

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

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

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

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

Вот некоторые команды для использования в пакетный файл для очистки (оба должно быть в пути):

  • СБНА остановка имя_служба - прекращает обслуживание по имени имя_служба
  • подкожно начать SERVICENAME - начинает обслуживание по имени имя_службы
  • подкожно ServiceName запрос - Запрашивает статус SERVICENAME

  • Taskkill/F/IM excel.exe - завершает все экземпляры excel.exe

0

Я могу ответить на вторую половину; если у вас есть ссылка на объект приложения в вашем коде, вы можете просто позвонить «Quit» на нем:

private Microsoft.Office.Interop.Excel.Application _excel; 
// ... do some stuff ... 
_excel.Quit(); 

Для проверки зависшего процесса, я предполагаю, что вы хотели бы, чтобы попытаться получить некоторые данные из приложения и посмотреть, получаете ли вы результаты в разумные сроки (проверьте таймер или другой поток или что-то еще). Однако, вероятно, лучший способ.

1

Я помню, делать это несколько лет назад - так я говорю Office XP или 2003 дней, а не 2007.

Очевидно, что лучшее решение для автоматизации в эти дни, чтобы использовать новый формат XML, который описывает DOCX и т.д. используя пространство имен System.IO.Packaging.

В то время я замечал, что всякий раз, когда MSWord пинал ведро и хватило, на машине работал процесс под названием «Доктор Уотсон». Это была моя первая подсказка, что Слово споткнулось и упало. Иногда я мог видеть более одного WINWORD.EXE, но мой код просто использовался для сканирования хорошего доктора. После того, как я увидел, что (в коде), я убил все WINWORD.EXE процессов самого хороший врач, и перезапустить процесс пытать слово :-)

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

Все самое лучшее,

Rob G

P.S. Я даже мог бы выкопать код в своих архивах, если вы не придете!

Смежные вопросы