多线程 窗体无反应

liycumt 2008-05-09 12:38:07
简单的说,有一个线程 负责每隔20ms 刷新 窗体(Form1)中一个控件(label1)
用的是, label1.update();

但是开始执行后,用鼠标点击Form1上的任何控件均没有反应(包括右上角关闭按钮)

而且Form1 最小化到任务栏后,单击图标,也无法在显示导桌面上?
求助!
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2008-05-09
  • 打赏
  • 举报
回复
可以参考下面文章
http://blog.csdn.net/jinjazz/archive/2008/05/06/2397136.aspx
tianrui456 2008-05-09
  • 打赏
  • 举报
回复
调用label1.update()线程的代码可以贴上来吗?
jinjazz 2008-05-09
  • 打赏
  • 举报
回复
你的代码有问题,在子线程中把主线程阻塞了
ericzhangbo1982111 2008-05-09
  • 打赏
  • 举报
回复
如果用线程更新主线程的东西的话
需要Invoke
liycumt 2008-05-09
  • 打赏
  • 举报
回复
是这样
UpdateL2Thread.Start(); // 更新labe2.Text

while(!UpdateL2Thread.IsAlive);
OCustInfo.OperateCustInfoFile(PBeginCustID,PRegType,PRegSrc,PSPID,PStatus,OperatorDateTime,FileType );

但是 label2并不更新

liycumt 2008-05-09
  • 打赏
  • 举报
回复
简单的讲,是这样,每处理文件一行,窗体上的控件label1。Text 计数就增加,


public class do
{

do()
{

}

public void UpdateL2()
{
while(true)
{
l2.Text=OperatorCustInfo.StaticTestCount.ToString(); //读取计数变量StaticTestCount
l2.Update();
System.Threading.Thread.Sleep(2);

}

}
doProgress()
{

UpdateL2Thread=new Thread(new ThreadStart(UpdateL2));
// 主线程去处理文件(主要是读取,然后入库) 每处理一行 StaticTestCount++
OCustInfo.OperateCustInfoFile(PBeginCustID,PRegType,PRegSrc,PSPID,PStatus,OperatorDateTime,FileType );

while(!UpdateL2Thread.IsAlive);
UpdateL2Thread.Start(); // 更新labe2.Text
}
}

这样更改后,窗体可以接受鼠标事件,有反应,但是label2.Text 并不更新
求助

110,567

社区成员

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

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

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