Принудительное завершение работы службы .Net IMAP. - PullRequest
0 голосов
/ 10 ноября 2010

Я написал приложение, которое использует Outlook и Redemption для выполнения некоторых операций синхронизации с сервером Exchange через IMAP. Он прекрасно работает, пока не попытается выйти. Он выполняет самую последнюю строку кода, которая просто печатает «Выход из службы», но эта строка происходит после вызова Application.Quit (), который я выполняю в Outlook. И значок Outlook 2010 все еще сидит на панели задач!

Мой вопрос: как я могу принудительно закрыть Outlook (даже быстрым и грязным способом), чтобы мое приложение гарантированно закрывалось, не оставаясь там в ожидании завершения закрытия Outlook, что иногда просто не происходит? (Он ждет, когда пользователь щелкнет правой кнопкой мыши значок панели задач и выберет «Выход»)

ТИА Дейв - Триндаз на Феданге # Exchange-интеграция

1 Ответ

0 голосов
/ 10 ноября 2010

Я никогда не использовал Redemption, но, похоже, это какой-то инструмент, который каким-то образом помогает автоматизировать Outlook, и всякий раз, когда вы автоматизируете любое приложение Office, вы всегда должны быть осторожны, чтобы очистить все должным образом, иначе оно останется с зависание ссылки и может не отключиться должным образом.

Таким образом, если использование Redemption каким-либо образом не изменится, я бы посоветовал вам вызвать Marshal.ReleaseComObject для любых ссылок на что-либо в Outlook, которое вы используете.

Чтобы сделать это, вы должны быть осторожны, чтобы всегда хранить все ссылки, к которым у вас есть доступ, поэтому избегайте выполнения вложенных вызовов, таких как:

SomeOutlookObject.SomeInnerOutLookObject.SomeMethod

И вместо этого

Object innerObj = SomeOutlookObject.SomeInnerOutLookObject;
innerObj.SomeMethod

Таким образом, вы также можете позвонить ReleaseComObject на innerObj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...