以下は私のコーディングです:
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 は「お待ちください」と表示します。
しかし、このコーディングの使用には問題があります。問題は、ボタンを初めてクリックすると、プロトコルが1回送信されるようなものです。その後、2回目でもう一度クリックすると、プロトコルが2回送信されます。その後、3 回目のクリックで、プロトコルを 3 回送信します....というように続きます。ボタンをクリックするたびに、送信のプロトコルの回数が増えます。
ボタンをクリックするたびに void bw_DoWork のコーディングが 1 回だけ実行されるのではないですか?
コーディングに何か問題がありますか?