我之前问过这个问题,但可能我不清楚,所以我再次发帖。我有一个gui。当我按下"button1"时,我的gui开始串行通信。我发送一些命令并接收一些数据。一旦我按下"button1",我将在另一个线程(GUI线程除外)中停留3,4秒,直到数据完全传输我想要的是当我按下按钮1时,在我的gui前面出现一个对话框、弹出窗口或类似的东西(显示忙消息),并且当整个数据传输时,这个弹出窗口在进行串行通信的另一个线程中自动关闭。
有人建议我做幕后工作,但我不清楚。
考虑到我的情况,这是一个很好的解释还是一种方法?
感谢
我会用以下代码来完成:
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();