スレッドと UI コントロールに興味があります。
テスト コードによると、コンパイルした .exe ファイルを実行すると、スレッドは問題なくプロセスバーにアクセスします。しかし、コードをデバッグすると、InvalidOperationException が発生します。(プールされたスレッドまたは通常のスレッドに関係なく。)
したがって、スレッドが UI コントロールへのアクセスを許可されていないことはわかっていますが、.exe ファイルを実行しても問題ない理由はわかっています。意図したデザインですか?
PS.backgroundworker を使用して物事をエレガントにできることはわかっています。
private void button1_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(dothing);//use the pooled thread
//Thread t = new Thread(new ThreadStart(this.ThreadProcSafe));
//t.Start();
}
private void dothing()
{
for (int i = 1; i <= 100; i++)
{
progressBar2.Value = i;
Thread.Sleep(100);
}
}