2013-05-09 2 views
0

В моих перспективах 2013 VSTO AddIn, у меня есть этот код: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?

Что я делаю в моем случае, это включить Windows Form в проект VSTO. Я передаю ссылку приложения Outlook из надстройки в форму Windows, а затем моя форма Windows может порождать один или несколько потоков, которые также могут получать и получать доступ к приложению Outlook (после блокировки ссылки). Методы Windows Form, которые потоки вызывают для обновления GUI, имеют проверку InvokeRequired, о которой вы упомянули. Я не могу гарантировать, что это рекомендованный Microsoft подход, но я могу сказать, что он работает без ошибок в течение года в моем случае.

Если вы предпочитаете делать это по-своему, я думаю, это было бы: если (f.InvokeRequired) ...

, но я не уверен, почему это необходимо

Смежные вопросы