Короткий вопрос: Как правильно закрыть объекты внешнего вида после их использования?COMException, когда было открыто слишком много файлов с перспективой
Code воспроизвести проблему:
Dim olApp As New Microsoft.Office.Interop.Outlook.Application
Dim olSelection As Microsoft.Office.Interop.Outlook.Selection = olApp.ActiveExplorer.Selection
For i As Integer = 1 To olSelection.Count 'Outlook starts counting at 1
Dim olItem As Object = olSelection(i)
Dim sSubject As String = olItem.Subject
olItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard)
Runtime.InteropServices.Marshal.ReleaseComObject(olItem)
Next
Объяснение:
Можно копировать элементы Outlook (MailItem
, DocumentItem
, PostItem
, в основном любой предмет) в мое заявление. Для этого я перебираю выбранные элементы окна активного Outlook. Он отлично работает, но когда более 250 (это может быть различным в зависимости от конфигурации) элементы выбран, COMExeption
брошено:
Необработанное исключение типа «System.Runtime.InteropServices.COMException» произошел в Microsoft.VisualBasic.dll
Дополнительная информация: Администратор вашего сервера ограничил количество элементов, которые вы можете открыть одновременно. Попробуйте закрыть открытые сообщения или удалить вложения и изображения из неработающих сообщений, которые вы создаете.
Я попытался закрыть предметы, когда они мне больше не нужны, но похоже, что ничего не делает.
Другие вопросы о тех же ошибках
Я знаю о this другого вопроса, что примерно таких же ошибок, но я уже следую советованию первых два ответов, а третье, принятые (и последние) ответ не вписывается в мой контекст
Вы проверили [этот ответ] (http://stackoverflow.com/questions/36826927/outlook-add-in-crashes-or-your-server-administrator -has-limited-the-number-of-it? rq = 1)? Короче говоря, после 'ReleaseComObject()', установите ссылку olItem на «Nothing». –
@SuperPeanut Спасибо за ответ, но добавление 'olItem = Nothing' после' ReleaseComObject' не помогло – Breeze