用了backgroundWorker之后 timer不管用了

zyy2010 2013-03-12 11:28:01
我的代码大体是这个样子的:


private void beginAnalysisBtn_Click(object sender, EventArgs e)
{
label1.Visible = true;
timer1.Enabled = true;
//如果把下面这句注释掉 timer就管用,加上之后timer就不管用了,文字一直不变
this.backgroundWorker1.RunWorkerAsync(); //后台异步加载数据
}

/// <summary>
/// 改变Label的文字
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChangeText(object sender, EventArgs e)
{
if (label1.Text.Length < 12)
{
label1.Text = label1.Text + dotString[position++ % dotString.Length];
}
else
{
label1.Text = label1.Text.Substring(0,5);
}
}

/// <summary>
/// 后台异步加载数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void backgroundWorker1_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e)
{
//读文件 比较耗时 读完之后再ListView显示
...//(代码省略)

timer1.Enabled = false;//读完以后 让timer失效 不再改变标签的文字
}


请各位大神给看看这是什么原因。
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
assky124 2013-03-12
  • 打赏
  • 举报
回复
把你的读文件的耗时长的方法移到 Background.DoWork事件中
assky124 2013-03-12
  • 打赏
  • 举报
回复
你的Background没有用到异步啊!
拥抱开源 2013-03-12
  • 打赏
  • 举报
回复
zyy2010 2013-03-12
  • 打赏
  • 举报
回复
引用 1 楼 unicorn_dsx 的回复:
backgroundWorker1_RunWorkerCompleted 把timer1设置不可用.??? 那你打算什么时候让timer1可用呢??
在用到backgroundWorker的前一句就设置为可用了,读文件的时间比较长,读完之后再设置不可用
xixihaha_2011_098 2013-03-12
  • 打赏
  • 举报
回复
backgroundWorker1_RunWorkerCompleted 把timer1设置不可用.??? 那你打算什么时候让timer1可用呢??

110,561

社区成员

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

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

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