プログラマになる

組み込みエンジニアで主にC言語、時々C#をやっている人の技術メモです。

C# BeginInvokeとInvokeの違い

はじめに

WPFアプリ作成中にBeginInvokeとInvokeを使い分ける必要があったのでメモる。

Dispatcher.BeginInvoke

スレッドでデリゲートを非同期的に実行、 Dispatcher に関連付けられています。

Dipatcher.Invoke

指定したデリゲートをスレッドで同期的に実行、 Dispatcher に関連付けられています。

まとめ

BeginInvokeは非同期のためRace Conditionなど引き起こす可能性がある。
処理によってはBeginInvokeとInvokeを意識して使い分けしないければならない。
BeginInvokeを無意識で使っていたら複数から処理が実行されていたので注意する。