下面是我的編碼: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