WPF:Dispatcher を利用した非同期処理

📋 目次(クリックで展開)

WPF でメインスレッドとは異なるスレッドで非同期処理を行う際には、Dispatcher を使います。
タイミングの問題で UI エレメントに正しくアクセス出来ない時に使っています。本来は並列処理など違う用途で威力を発揮するんだと思います。

C#

private void Button_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("メインスレッド1");
this.Dispatcher.BeginInvoke(
new Action(() =>
{
// 時間のかかる処理を実行
Debug.WriteLine("別スレッド");
})
);
Debug.WriteLine("メインスレッド2");
}

VB.NET

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
Debug.WriteLine("メインスレッド1")
Me.Dispatcher.BeginInvoke(
Sub()
' Dispatcherを利用してUIスレッドに処理を配送
' 時間のかかる処理を実行
Debug.WriteLine("別スレッド")
End Sub)
Debug.WriteLine("メインスレッド2")
End Sub

💬 コメント