下面是我的编码:C#BackgroundWorker的继续运行DoWork的
Form2 msgForm;
private void button3_Click_1(object sender, EventArgs e)
{
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
msgForm = new Form2();
try
{
bw.RunWorkerAsync();
msgForm.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
// Coding that transmit protocol and will last around 2 minutes.
}
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
msgForm.Close();
}
我用的是后台工作方法,每次我点击一个按钮以发射持续约2分钟协议。在传输过程中,From2将显示“Please wait”。
但我使用这种编码有一些问题。问题是,当我第一次点击按钮时,它会传输协议一次。之后,我再次点击这是第二次,它传输协议两次。之后,我再次点击这是第三次,它传输协议3次....等等。每次点击按钮,传输协议的次数都会增加。
是不是说它只会运行一次无效的编码bw_DoWork每次我点击按钮?
我的编码有问题吗?
没有亚历克斯。我只是使用工作人员传输协议而已。 – Coolguy
然后在方法中声明它。 – Alex
亚历克斯,你是指通过移动方法内的后台工作者的声明是什么意思? – Coolguy