BackgroundWorker, RunWorkerCompleted事件疑问
为什么在RunWorkerCompleted事件中先close的dialog,并不会消失,只有当click弹出的MessagBox 的ok 按钮后,才会消失。
BackgroundWorker backgroundWorker;
Form2 authenticateDialog;
public Form3()
{
InitializeComponent();
backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(DoLogin);
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoLoginCompleted);
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker.RunWorkerAsync();
ShowAuthenticateDialog();
}
protected void DoLogin(object sender, DoWorkEventArgs e)
{
int i=0;
int max=100;
while(i<max)
{
Thread.Sleep(10);
i++;
}
}
protected void DoLoginCompleted(object sender, RunWorkerCompletedEventArgs e)
{
CloseAuthenticateDialog();
MessageBox.Show("OK");
}
private void ShowAuthenticateDialog()
{
authenticateDialog = new Form2();
authenticateDialog.ShowDialog();
}
private void CloseAuthenticateDialog()
{
authenticateDialog.Close();
}
...全文
相关推荐
C#中backgroundworker的使用教程
主要介绍了C#中backgroundworker的使用教程,在文中有两点需要注意的,大家可以看下
VB.net BackgroundWorker使用例子很经典
VB.net BackgroundWorker使用例子
c# BackgroundWorker使用方法
主要介绍了c# BackgroundWorker使用方法,文中代码非常详细,帮助大家更好的参考学习,感兴趣的朋友可以了解下
C#中backgroundWorker类的用法详解
1、在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面停止响应。解决的方法就是新开一个线程,把耗时的操作放到线程中执行,这样就可以在用户界面上进行其它操作。新建线程可以用 Thread 类,可以实现多线程同时操作。简单的方法可以通过 BackgroundWorker 类实现。 BackgroundWorker 可以用来更新UI界面,但是通常用来Progressbar(进度条)控件 例如更新UI private void Form1_Load(object sender, EventArgs e) { this.backgroundWorker
异步处理窗口假死(BackgroundWorker类使用)
窗口假死还在困扰着你吗?快来看看本文档,会对你有帮助的。


