ボタンのクリックが発生するたびに新しいスレッドを実行しようとしています。これにより、新しいフォームが作成されます。MainFormのボタンクリックイベントでこれを試しました。
private void button1_Click(object sender, EventArgs e)
{
worker1 = new Thread(new ThreadStart(thread1));
worker2 = new Thread(new ThreadStart(thread2));
worker1.Start();
worker2.Start();
}
private void thread1()
{
SubForm s = new SubForm();
s.Show();
}
private void thread2()
{
SubForm s = new SubForm();
s.Show();
}
サブフォームボタンクリックイベントのコードは次のようになります。
private void button1_Click(object sender, EventArgs e)
{
int max;
try
{
max = Convert.ToInt32(textBox1.Text);
}
catch
{
MessageBox.Show("Enter numbers", "ERROR");
return;
}
progressBar1.Maximum = max;
for ( long i = 0; i < max; i++)
{
progressBar1.Value = Convert.ToInt32(i);
}
}
これは正しい方法ですか?2つの独立したフォームを開こうとしているので、一方のスレッドでの操作がもう一方のスレッドに影響を与えることはありません。
それとも、BackGroundworkerはこれを実装するためのソリューションですか?はいの場合、誰かがそれを手伝ってくれますか?