我有一个工具栏加载项,旨在将所选邮件添加到非常慢的内部存档中。目前,我一次循环浏览每封电子邮件,这很慢。 我是否可以为插件中的每次上传创建一个线程,然后在所有操作完成后加入?还是在Outlook沙箱中禁止使用?
答案 0 :(得分:0)
为这个懒惰的问题表示歉意,对于以后发现它的任何人,没有什么可以阻止您在VSTO应用程序中创建线程。下面的测试子可以用来确认这一点:
Private Sub Button3_Click(sender As Object, e As RibbonControlEventArgs) Handles Button3.Click
Dim myData As String() = New String() {"a", "b", "c"}
Debug.WriteLine("Starting")
Using signalEv As CountdownEvent = New CountdownEvent(1)
For Each s As String In myData
signalEv.AddCount()
ThreadPool.QueueUserWorkItem(Sub(state)
Try
ProcessData(state)
Finally
signalEv.Signal()
End Try
End Sub,
s)
Next
signalEv.Signal()
signalEv.Wait()
End Using
Debug.WriteLine("all done")
End Sub
Private Sub ProcessData(s As String)
Debug.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString & " data: " & s)
End Sub