关于backgroundWorker的问题

seabluescn 2009-01-15 02:07:14
我希望点击一个按钮执行一个后台任务,同时希望,该任务未结束前,按钮事件不要重入。

//按钮事件

private void button1_Click(object sender, EventArgs e)
{
this.backgroundWorker.RunWorkerAsync();

while (this.backgroundWorker.IsBusy)
{
System.Diagnostics.Debug.WriteLine("this.backgroundWorker.IsBusy");
System.Threading.Thread.Sleep(1000);
}
}

//后台任务,仅0.1秒执行完毕

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(100);
System.Diagnostics.Debug.WriteLine("backgroundWorker_DoWork complete");
}

程序运行后,输出窗口显示:backgroundWorker_DoWork complete

但一直输出:this.backgroundWorker.IsBusy,程序进入死锁状态。

...全文
93 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dayizhixiaotutu 2009-01-15
  • 打赏
  • 举报
回复

//按钮事件

private void button1_Click(object sender, EventArgs e)
{
this.backgroundWorker.RunWorkerAsync();

while (this.backgroundWorker.IsBusy)
{
System.Diagnostics.Debug.WriteLine("this.backgroundWorker.IsBusy");
System.Threading.Thread.Sleep(1000);
Application.DoEvents();
}
}

//后台任务,仅0.1秒执行完毕

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
System.Threading.Thread.Sleep(100);
System.Diagnostics.Debug.WriteLine("backgroundWorker_DoWork complete");
}
HDNGO 2009-01-15
  • 打赏
  • 举报
回复

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧