ウィンドウ フォーム コントロールを更新するためのスレッド セーフ呼び出しに関する MSDN の記事を読みました。例を以下に示します。
private void setTextSafeBtn_Click(
object sender,
EventArgs e)
{
this.demoThread =
new Thread(new ThreadStart(this.ThreadProcSafe));
this.demoThread.Start();
}
private void ThreadProcSafe()
{
this.SetText("This text was set safely.");
}
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
スレッドがウィンドウフォームコンストラクター内にある場合、これを試してみるとうまくいきます。ただし、たとえば、スレッドが Windows フォームとは異なるコンストラクターにある場合、スレッド化されたコンストラクターからどのようにアクセスしますか。私は次のようなことをしようとしました
Form1 form1 = new Form1();
しかし、私はそれを試してみましたが、コントロールを更新しませんでした。新しいフォームを作成すると、意図したものを更新するのではなく、新しいフォームのコントロールを更新しようとしていることがわかりました。とにかく私の理解では正しいですか、これに対する解決策はありますか?
用語が間違っている場合は申し訳ありません。これをすべて理解しようとしています。