Windows Form アプリケーションを作成する際に UI コントロールへスレッドセーフにアクセスするには一工夫、必要です。 例えば TextBox
に文字列を設定する場合、C# だと以下のように書けます。 InvokeRequired
で Invoke
が必要な場合は MethodInvoker
を使います。
private void SetText(TextBox txtBox, string text)
{
if (txtBox.IsDisposed) return;
if (txtBox.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate { SetText(txtBox, text); });
}
else
{
txtBox.Text = text;
}
}
コメント