我目前正在开发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
没有MSGBox +调试
答案 0 :(得分:0)
添加搜索完成后要调用的事件处理程序。正如GSerg所说,AdvancedSearch是异步的,因此当您的代码显示计数时,它仍在运行。
有关代码示例,请参见the documentation。