😎

[C#/VB.NET]他UIスレッドからコントロール操作する時の記述

2023/06/17に公開

invoke の処理を数行で書く方法

WinForms や WPF で GUI 開発していると非同期処理でフォームをフリーズさせずに動かしたいことはよくあるかと思います。
そんな時にどのような記述をすればよいのかを備忘録がてら書き残しておこうと思います。

  • WinForms
    C#の書き方
this.Invoke((MethodInvoker)(() =>
{
        textBox1.Text="hello world!";
}));

VB.NET の書き方

Invoke(Sub()
        textBox1.Text="hello world!"
    End Sub)
  • WPF
    C#の書き方
Application.Current.Dispatcher.Invoke(() =>
{
        textBox1.Text="hello world!"
});

VB.NET の書き方

Application.Current.Dispatcher.Invoke(Sub()
        textBox1.Text="hello world!"
    End Sub)

変更したいコントロールをこのように invoke で囲ってあげればコントロールの更新ができます。

Discussion