😎
[C#/VB.NET]他UIスレッドからコントロール操作する時の記述
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