C# Invokeメソッドの使い方:UIスレッド制御の基本
C#では、通常、InvokeメソッドはUIスレッド以外のスレッドでUI要素に操作を実行するために使用されます。なぜなら、UI要素はそれらを作成したスレッドからしかアクセスできないからです。Invokeメソッドの使用方法は以下の通りです:
- UIスレッドで実行する操作を含むデリゲートを作成します。
delegate void UpdateTextDelegate(string text);
- 呼び起こす (yobiokosu)
private void UpdateText(string text)
{
if (textBox1.InvokeRequired)
{
UpdateTextDelegate del = new UpdateTextDelegate(UpdateText);
this.Invoke(del, new object[] { text });
}
else
{
textBox1.Text = text;
}
}
上記の例で、UpdateTextメソッドはtextBox1のテキスト内容を更新するために使用されます。現在のスレッドがUIスレッドでない場合は、Invokeメソッドを使用してデリゲートを呼び出し、更新操作をUIスレッドで実行します。
- アップデートテキストを更新します。
UpdateText("Hello, World!");
Invoke方法を使用することで、非UIスレッドでUI要素を操作しても例外が発生せず、操作がUIスレッドで実行されることが保証され、スレッドセーフの問題を回避することができます。