0

以下は私のコーディングです:

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をフリーズしない方法はありますか?

4

1 に答える 1

2

ダイアログ ( ) を表示したためにフリーズしますmsgForm.ShowDialogか?

私はそう思います - 試してみてくださいShow

于 2012-09-20T08:32:35.797 に答える