2013-05-09 78 views
0

在我的Outlook 2013 VSTO外接程序,我有这样的代码:Outlook AddIn:如何调用InvokeRequired?

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的?

谢谢

回答

0

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

我在做的事情是在VSTO项目中包含一个Windows窗体。我将Outlook应用程序参考从外接程序传递到Windows窗体,然后我的Windows窗体可能会产生一个或多个可能接收和访问Outlook应用程序(在锁定参考之后)的线程。线程调用来更新GUI的Windows窗体方法具有您提到的InvokeRequired检查。我无法保证这是微软推荐的方法,但我可以说它已经在我的案例中为我工作了一年多了。

如果你喜欢做你的方式,我认为这将是:如果 (f.InvokeRequired)...

,但我不知道为什么这是必要的