以下は私のコーディングです:
Form2 msgForm;
private void button3_Click_1(object sender, EventArgs e)
{
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
//bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
msgForm = new Form2();
try
{
bw.RunWorkerAsync(comboBox15.Text);
msgForm.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
string PrtAdd = e.Argument.ToString();
uploadlogo(PrtAdd);
// uploadlogo(PrtAdd) is the coding that transmit serial protocol and will last around 2 minutes to finish.
}
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
msgForm.Close();
}
私のコーディングは、ボタンをクリックするとプロトコルが送信され、約2分かかるため、ボタンをクリックしたときにバックグラウンドワーカーを実行するためのものです。
この2分間、form2に「お待ちください」と表示されます。
問題は、このコーディングを実行し、ボタンをクリックしてバックグラウンドワーカーを実行すると、winformUIがフリーズすることです。UIをフリーズしない方法はありますか?