はじめに
WPFアプリ作成中にBeginInvokeとInvokeを使い分ける必要があったのでメモる。
Dispatcher.BeginInvoke
スレッドでデリゲートを非同期的に実行、 Dispatcher に関連付けられています。
Dipatcher.Invoke
指定したデリゲートをスレッドで同期的に実行、 Dispatcher に関連付けられています。
まとめ
BeginInvokeは非同期のためRace Conditionなど引き起こす可能性がある。
処理によってはBeginInvokeとInvokeを意識して使い分けしないければならない。
BeginInvokeを無意識で使っていたら複数から処理が実行されていたので注意する。