社区
C#
帖子详情
多线程 窗体无反应
liycumt
2008-05-09 12:38:07
简单的说,有一个线程 负责每隔20ms 刷新 窗体(Form1)中一个控件(label1)
用的是, label1.update();
但是开始执行后,用鼠标点击Form1上的任何控件均没有反应(包括右上角关闭按钮)
而且Form1 最小化到任务栏后,单击图标,也无法在显示导桌面上?
求助!
...全文
203
6
打赏
收藏
多线程 窗体无反应
简单的说,有一个线程 负责每隔20ms 刷新 窗体(Form1)中一个控件(label1) 用的是, label1.update(); 但是开始执行后,用鼠标点击Form1上的任何控件均没有反应(包括右上角关闭按钮) 而且Form1 最小化到任务栏后,单击图标,也无法在显示导桌面上? 求助!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 并不更新
求助
多线程
实例
delphi的
多线程
实例,可以明显看出图片的移动时,
窗体
的
反应
Java编写的
多线程
生命棋游戏(里面的核心算法很有创意)
/** * 功能:生命棋游戏(一个细胞周围有8个细胞) * 规则:1. 如果一个细胞周围有3个细胞为生,则该细胞为生 * (即该细胞若原先为死,则转为生,若原先为生,则保持不变) * 2. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变; * 3. 在其它情况下,该细胞为死 * (即该细胞若原先为生,则转为死,若原先为死,则保持不变) * * 编程主要思想是:每一个细胞对应窗口中的一个JButton按钮jBCell[i][j], * 每一个jBCell[i][j]对应一个二维数组元素cell[i][j]和 * 一个二维数组元素oldcell[i][j],cell用来更新oldcell, * 定义一个 2行8列矩阵way[][]={{1,1,1,0,0,-1,-1,-1}, * {1,0,-1,1,-1,1,0,-1}} * 通过 for (int k=0;k<8;k++) { int lx=i+way[0][k]; int rx=j+way[1][k]; if (lx<0||rx99||rx>99) continue; if (cell[lx][rx]>0) sum++; } 循环,就可以把一个细胞周围的活细胞数量统计出来,从而 确定该细胞下一状态, 确定一边所有细胞的状态后,通过改变jBCell[][]的图标来
反应
整个生命棋游戏的运行状态 用Thread.sleep(100);来动态呈现在
窗体
上 */
提供各种高级界面窗口的基类VC源码-
窗体
界面-
提供各种高级界面窗口的基类VC源码-
窗体
界面-
C# winfrom
窗体
打地鼠源码
初来乍到,小游戏。
Java俄罗斯方块(不规则
窗体
)
Java俄罗斯方块(不规则
窗体
)版,供大家学习交流,一共有三个主题,希望大家喜欢。
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章