Outlook AddIn:如何调用InvokeRequired?

时间:2013-05-09 11:26:57

标签: vsto outlook-addin outlook-2013

在我的Outlook 2013 VSTO AddIn中,我有以下代码:

Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
    Task.Run(Sub() DoStuff())
End Sub

Private Sub DoStuff()
    ' Do some long task stuff
    Call StuffDone() 
End Sub

Private Sub StuffDone()
    If ????.InvokeRequired Then
        ????.Invoke(New MethodInvoker(AddressOf StuffDone))
        Exit Sub
    End If

    Dim f As New Form1
    f.Show()
End Sub

但我不知道如何调用InvokeRequired,因为没有mainform?

由于

1 个答案:

答案 0 :(得分:0)

为什么你觉得你需要调用InvokeRequired?

在我的案例中,我正在做的是在VSTO项目中包含一个Windows窗体。我将Outlook应用程序引用从加载项传递到Windows窗体,然后我的Windows窗体可能会生成一个或多个线程,这些线程也可以接收和访问Outlook应用程序(在锁定引用之后)。线程调用以更新GUI的Windows窗体方法具有您提到的InvokeRequired检查。我不能保证这是微软推荐的方法,但我可以说它在我的情况下一年多没有错误地为我工作。

如果您愿意按自己的方式进行,我认为会: if(f.InvokeRequired)...

但我不确定为什么这是必要的