#vb.net #outlook #vsto #outlook-addin
#vb.net #outlook #vsto #outlook-addin
Вопрос:
Я пытаюсь привязать к ItemLoad и ItemSend всех хранилищ в клиенте Outlook, но это происходит очень медленно.
Вот мой код…
Private Shared WithEvents _explorer As Outlook.Explorer = Nothing
Private Shared WithEvents _inspectors As Outlook.Inspectors
Public Shared Sub Init()
_explorer = Globals.ThisAddIn.Application.Explorers.Application.ActiveExplorer
_inspectors = Globals.ThisAddIn.Application.Inspectors
Dim ns As Outlook.NameSpace = Globals.ThisAddIn.Application.GetNamespace("MAPI")
Dim stores As Outlook.Stores = ns.Stores
For i As Integer = 1 To stores.Count
Try
Dim store As Outlook.Store = stores(i)
Dim sentFolder As Outlook.Folder = CType(store.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail), Outlook.Folder)
Dim sentItem As Outlook.Items = sentFolder.Items
AddHandler sentItem.ItemAdd, AddressOf MailSendt
Marshal.ReleaseComObject(store)
Catch ex As System.Exception
End Try
Next
Marshal.ReleaseComObject(stores)
Marshal.ReleaseComObject(ns)
End Sub
Строка…
Dim store As Outlook.Store = stores(i)
… чрезвычайно медленно. Это может занять 2-4 секунды, а когда у моих пользователей около 20-30 магазинов, это может занять пару минут, когда Outlook заблокирован.
Мы используем последнюю версию Office 365.
Есть идеи, как это ускорить?
Спасибо.
Комментарии:
1. Вы пытаетесь установить обработчики событий для всех элементов в профиле ?!
2. Я пытаюсь прослушать все входящие и отправленные сообщения пользователей, поэтому я получу уведомление (по электронной почте), когда элементы будут отправлены или получены. Это касается их личных папок и общих почтовых ящиков.
3. Зачем вам ItemLoad и ItemSend для тысяч элементов?
4. Я не загружаю или не отправляю ItemSend для тысяч элементов — только для 20-30 почтовых ящиков. Я прослушиваю почтовые ящики для новых элементов.
5. Так что это приложение. ItemSend и Application. ItemLoad, верно? Тогда зачем вам открывать магазины?