VSTO Outlook加载项中的分叉线程

时间:2018-09-16 20:25:03

标签: vb.net vsto

我有一个工具栏加载项,旨在将所选邮件添加到非常慢的内部存档中。目前,我一次循环浏览每封电子邮件,这很慢。 我是否可以为插件中的每次上传创建一个线程,然后在所有操作完成后加入?还是在Outlook沙箱中禁止使用?

1 个答案:

答案 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