删除消息框后,VB.NET的运行方式有所不同-Outlook应用程序

时间:2018-10-24 15:28:43

标签: vb.net outlook-addin mailitem outlook.application

我目前正在开发Outlook应用程序,该应用程序在测试过程中似乎运行良好。

MSGBox("ASDFG")就位(rsts.Count返回1)时,此代码似乎可以工作,但是一旦将其删除,该语句将返回0。我试图通过添加Debug.Print来解决这一问题,以查看是否有任何区别,但是我仍然发现,只有在MSGBox到位后,代码才能正确运行。

我什至添加了一个Timer1间隔,如果脚本返回0,则每秒重新运行该脚本。

Function myThread()
    Dim oApp As Outlook.Application = CreateObject("Outlook.application")
    Dim sch As Outlook.Search
    Dim rsts As Outlook.Results
    Dim i As Integer
    Dim myTaskSearch As String = ToolStripStatusLabel2.Text
    Dim strF As String = "urn:schemas:mailheader:subject LIKE '%Task: " & myTaskSearch & "%'"
    Const strS As String = "Inbox"

    Try
        sch = oApp.AdvancedSearch(strS, strF)
        rsts = sch.Results
        MsgBox("ASDFG")
        Debug.Print(sch.Results.ToString)
        Debug.Print("'" & myTaskSearch & "'")

        If rsts.Count = 0 Then
            Debug.Print(rsts.Count)
            Timer1.Interval = 1000
            Timer1.Start()
        End If
        For i = 1 To rsts.Count
            Debug.Print(i)
            Timer1.Stop()
            TabControl1.TabPages.Add(i)
            'rsts.Item(i).Body
            'rsts.Item(i).SenderName
        Next
    Catch ex As System.Exception
        MsgBox(ex.ToString)
    End Try
End Function

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    myThread()
End Sub

使用MSGBox

With MSGBox


没有MSGBox +调试

Without MSGBox

1 个答案:

答案 0 :(得分:0)

添加搜索完成后要调用的事件处理程序。正如GSerg所说,AdvancedSearch是异步的,因此当您的代码显示计数时,它仍在运行。

有关代码示例,请参见the documentation