私は、スレッドで実行する必要があるプロジェクトに取り組んでいます。
私は仕事をするバックグラウンドワーカーを持っています。私が達成したいのは、 を押すButton3
と、バックグラウンド ワーカーが再起動することです。バックグラウンド ワーカーがしばらく終了するのを待ちましBackgroundworker1.IsBusy
たが、これは決して終わりません。を押すとButton3
、エラーが発生します
この BackgroundWorker は現在ビジーで、複数のタスクを同時に実行できません
これは私のコードです:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
}
private void button3_Click_1(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
int x = 0, y = 0, result;
while (true)
{
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
break;
}
else
{
x++;
y++;
result = x + y;
this.label1.Invoke(new MethodInvoker(() => this.label1.Text = result.ToString()));
}
}
}
}//public partial class Form1 : Form