GUI忙消息

时间:2013-02-22 08:30:10

标签: c# winforms user-interface

之前我问过这个q,但可能是我不清楚,所以我再次发帖。我有一个gui。当我按下“button1”时,我的gui开始串行通讯。我发送一些命令并接收一些数据。一旦我按下“button1”,我就在另一个线程(GUI线程除外)中持续3,4秒,直到完全传输数据。 我想要的是什么是一个对话框,弹出或类似的东西(显示一条忙碌的信息),当我按下按钮1时,我的gui面前出现这个弹出窗口,这个弹出窗口会在另一个线程中自动关闭传输整个数据时正在进行串行通信。

有些人建议回到地面工作人员,但我不清楚。

考虑我的情景,这是一个很好的解释或方法吗?

由于

1 个答案:

答案 0 :(得分:0)

我会用以下代码来完成:

  public partial class frmWait : Form
{
    private BackgroundWorker worker;

    public frmWait()
    {
        InitializeComponent();
        this.worker = new BackgroundWorker
            {
                WorkerReportsProgress = true
            };
        this.worker.RunWorkerCompleted += WorkerOnRunWorkerCompleted;
        this.worker.DoWork += WorkerOnDoWork;
        this.worker.ProgressChanged += WorkerOnProgressChanged;
        this.worker.RunWorkerAsync();
    }

    private void WorkerOnProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        // Update UI or something else
    }


    private void WorkerOnDoWork(object sender, DoWorkEventArgs e)
    {
        // Do background-stuff here
    }

    private void WorkerOnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        // Actions after BackgroundWorker is done
        Close();
    }
}

在带有button1的表单中,在按钮的单击事件中,您只需:

frmWait wait = new frmWait();
wait.ShowDialog();