Hi guys,
I'm faced with a weird error message in my code. Any idea how to deal with this in a more efficient way?
The goal is the following:
For many different Outlook folders, I need to display the receive date of the oldest mail. I'm currently using the following code:
General Declarations + default values
Sub to retrieve the values is being called from the below timer with a user adjustable interval.Code:Dim oOutlook As Microsoft.Office.Interop.Outlook.Application Dim oNs As Microsoft.Office.Interop.Outlook.NameSpace Dim oFldr As Microsoft.Office.Interop.Outlook.MAPIFolder Dim blnFinishedWorking As Boolean = True Dim Profiles(8, 0) As String Profiles(0, 0) = "Inbox"
This is the timer code that calls the sub for each Outlook folderCode:Private Sub ViewUnreadMessages(ByVal FolderIndex As Integer) 'Open Outlook oOutlook = New Microsoft.Office.Interop.Outlook.Application oNs = oOutlook.GetNamespace("MAPI") 'Put the Outlook foldername in a variable Dim OutlookFolder As String = Profiles(0, FolderIndex) 'Depending on whether the folder is the main Inbox or an Inbox subfolder, use the appropriate code to open it If OutlookFolder = "Inbox" Then oFldr = oNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox) 'If the folder is called Inbox, then just check the inbox Else oFldr = oNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Folders(OutlookFolder) 'If the folder is a subfolder of the Inbox, then just check that folder End If 'Put the amount of unread mail on the UnreadLabel UnreadLabel(FolderIndex).Text = oFldr.UnReadItemCount 'Then track down the oldest mail and store it in variable OldestEmail Dim OldestEmail As Date = Now() 'This is the For Loop causing the slowdown/crash For Each Email In oFldr.Items If Email.UnRead = True Then If Email.ReceivedTime < OldestEmail Then OldestEmail = Email.ReceivedTime End If Next 'Calculate the delay in minutes Dim LngDelayInMinutes As Long = DateDiff(DateInterval.Minute, OldestEmail, Now()) 'Convert the delay to an understandable hh:mm format Dim Minutes = Fix(LngDelayInMinutes) Dim Hours = Fix(LngDelayInMinutes / 60) Minutes = LngDelayInMinutes - (Hours * 60) If Minutes < 10 Then DelayLabel(FolderIndex).Text = CStr(Hours) & ":0" & CStr(Minutes) 'leading zero if amount of minutes is just 1 character Else DelayLabel(FolderIndex).Text = CStr(Hours) & ":" & CStr(Minutes) End If 'Close Outlook oFldr = Nothing oNs = Nothing oOutlook = Nothing blnFinishedWorking = True End Sub
This code works fine as long as there are not too many emails in the Outlook folder. But in my environment, it causes serious application slowness and even crashes. Is there a way to make the offending loop lighter so it doesn't crash the app?Code:If blnFinishedWorking = True Then 'For each Outlook Folder, put the amount of unread messages in the appropriate label For i = 0 To Profiles.GetUpperBound(1) ViewUnreadMessages(i) Next End If
Error: Error HRESULT E_FAIL has been returned from a call to a COM component.
Error code: -2147467259
Debug code:
Many thanks for your insight!Code:'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'F:\TEST\Unread Mail Project\Unread Mail\Unread Mail\bin\Debug\Unread Mail.vshost.exe', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Deployment\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualBasic\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. The thread 'vshost.NotifyLoad' (0x1624) has exited with code 0 (0x0). The thread '<No Name>' (0x1194) has exited with code 0 (0x0). The thread '<No Name>' (0x3ec) has exited with code 0 (0x0). The thread '<No Name>' (0xa14) has exited with code 0 (0x0). The thread 'vshost.LoadReference' (0x1b8) has exited with code 0 (0x0). 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'F:\TEST\Unread Mail Project\Unread Mail\Unread Mail\bin\Debug\Unread Mail.exe', Symbols loaded. 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll' 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Outlook\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Outlook.dll' 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\assembly\GAC\office\11.0.0.0__71e9bce111e9429c\office.dll' 'Unread Mail.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\CustomMarshalers\v4.0_4.0.0.0__b03f5f7f11d50a3a\CustomMarshalers.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in Microsoft.VisualBasic.dll The program '[2088] Unread Mail.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).




Reply With Quote