/ / Outlook AddIn:InvokeRequiredはどのように呼び出すことができますか? - vsto、outlook-addin、outlook-2013

Outlook AddIn:InvokeRequiredはどのように呼び出すことができますか? - 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を呼び出す方法を知っていないので、メインフォームはありませんか?

ありがとう

回答:

回答№1は0

なぜあなたはInvokeRequiredを呼び出す必要があると思いますか?

私が私の場合にしているのは、WindowsVSTOプロジェクトのフォーム。私はOutlookアプリケーションリファレンスをアドインからWindowsフォームに渡します。そして、Windowsフォームは、(参照をロックした後に)Outlookアプリケーションを受信して​​アクセスすることがある1つ以上のスレッドを生成することがあります。 GUIを更新するためにスレッドが呼び出すWindows Formメソッドは、あなたが言及したInvokeRequiredチェックを持っています。私はこれがマイクロソフトが推奨するアプローチであることを保証することはできませんが、私のケースでは1年間以上エラーフリーで働いていると言えるでしょう。

あなたがそれをあなたのやり方で行うことを好むなら、私はそれがそうであると思う: if(f.InvokeRequired)...

しかし、なぜそれが必要なのかわからない