VC/MFC
VB
Delphi
C++ Builder
C/C++
Java
.NET技术
MS-SQL Server
PowerBuilder
DB2
Oracle
Web 开发
Linux/Unix社区
硬件/嵌入开发
移动平台
您的位置:
程序门
->
.net技术
-> c#
多线程问题
[
收藏此页
] [
打印本页
]选择字色:
默认
灰色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
背景色:
默认
黑色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
字体:[
大
][
中
][
小
]
多线程问题
[已结贴,结贴人:liycumt]
发表于:
2007-08-29 11:35:00
楼主
线程1 th1 用来更新窗体上一个label 的text
th1=new thread(new threadstart(updatelable));
主线程(窗体线程)
while(true)
{
th1.start();
while(!th1.isalive);
do something
}
void updatelabel()
{
while(true)
label1.text=value1.tostring();
}
但是窗体 上的label1的text并没有更新,虽然value1在不断发生变化
发表于:
2007-08-29 11:41:01
1
楼 得分:
0
线程1 th1 用来更新窗体上一个label 的text
th1=new thread(new threadstart(updatelable));
主线程(窗体线程)
while(true)
{
th1.start();
while(!th1.isalive);
do something
}
void updatelabel()
{
while(true)
label1.text=value1.tostring();
label1.refresh(); //此处加个刷新
}
发表于:
2007-08-29 11:57:17
2
楼 得分:
0
但是问题好像是 要等
while(true)
{
th1.start();
while(!th1.isalive);
do something
}
加了label1.refresh(); //此处加个刷新
循环结束后,th1 才能开始得到执行,这是为什么?
发表于:
2007-08-29 12:47:06
3
楼 得分:
20
void updatelabel()
{
while(true)
{
label1.text=value1.tostring();
label1.refresh(); //此处加个刷新
}
}
修改一下解决。少一个括号。呵呵~~~
发表于:
2007-08-29 12:55:18
4
楼 得分:
0
不过你这样做会占用很多系统资源,用线程通讯比较好。多线程实际上有两种做法,一个是自己开一个线程自己管理,另外一个是用异步的委托代理。你用第一种,我帮你改一下
private static manualresetevent alldone = new manualresetevent(false);
主线程(窗体线程)
while(true)
{
alldone.reset();
th1.start();
//while(!th1.isalive);
alldone.wait(); // 挂起,等待子线程结束
do something
}
void updatelabel()
{
while(true)
{
label1.text=value1.tostring();
label1.refresh(); //此处加个刷新
}
alldone.set(); // 通知主线程继续运行
}
发表于:
2007-08-29 12:58:24
5
楼 得分:
0
不好意思,看错了,你用的是while(!th1.isalive);那么子线程应该改如下
void updatelabel()
{
alldone.set(); // 子线程开始,通知主线程继续运行
while(true)
{
label1.text=value1.tostring();
label1.refresh(); //此处加个刷新
}
}
发表于:
2007-08-29 13:44:37
6
楼 得分:
0
谢谢楼上几位提供的方法 我是了下 还是不好用
我的需求是这样的
在窗体上有个label 它用来即时显示正在处理文本文件中的第 几条记录,
主线程main 函数读取 每次读取 文本一行并处理
发表于:
2007-08-29 13:58:27
7
楼 得分:
0
如果吧th1 设置为 后台线程 有什么关系么
发表于:
2007-08-29 14:46:39
8
楼 得分:
0
to 碧海蓝天
如果我在 主线程(窗体线程)加一个messagebox。show();
则 th1 就能得到执行
while(true)
{
th1.start();
while(!th1.isalive);
do something
messagebox.show();// 后加德 不知道为什么?
}
发表于:
2007-08-29 15:27:49
9
楼 得分:
0
不知为不知,我都是做后台的,几乎没有接触到ui,不是很清楚ui的东西。
一般多线程流程应该如此:
主线程开始 -> 计数器归0 -> 启动子线程1读取文本 -> 启动子线程2定时刷新界面 -> 主线程结束(这里不结束,界面会卡住)
子线程1开始 -> 读取文本 -> 开始循环处理每一条记录
子线程1循环体 -> 处理记录 -> 处理纪录结束,计数器加1 -> 下一条记录
循环结束 -> 通知子线程2处理结束 -> 子线程2停止
子线程2开始 -> 死循环,直到线程1结束
死循环 -> 读取计数器 -> 刷新label -> 如果处理结束,则用break跳出循环,否则thread.sleep(25) -> 继续循环(这里25毫秒刷1次就可以了,不然系统速度狂降)
循环结束后 -> 最后一次读取计数器 -> 刷新label -> 子线程2停止
发表于:
2007-08-29 15:30:09
10
楼 得分:
0
循环结束 -> 通知子线程2处理结束 -> 子线程1停止 // 这里写错,是1停止不是2停止
发表于:
2007-08-30 08:54:04
11
楼 得分:
0
to 碧海蓝天
我还是 用了这个private static manualresetevent 方法。
用了两个 manualresetevent对象,alldone, mr, alldone负责主线程,mr 负责 刷新label 的线程。 在主线程里 控制 mr、 在刷新label线程里控制alldone,使两个线程交替执行。
谢谢你的竭力帮助
下一篇:
使用带参数的sql语句, 如何使其支持 in (@parm) 这样的格式
上一篇:
如何获取listview(form程序)的索引项值??
相关文章
☆☆☆owc11组件怎样让饼图实现3d效果?百分比怎么...
"数据源控件"大家用的多吗?
一个怪问题.大家来看看.讨论下.欢迎参观!
入门问题 自己做一个向导"上一步"时如何显示...
做了个online judge,正在半公开测试,希望...
.net帝国第一难题:如何用代码选中select框中的第...
广州佳音通讯招募精英,愿意与强者为伍的请近!&nb...
每一位欲从事数字犯罪的“黑客”们必须了解的知识...
高手请进winform下界面上有好几个textbox怎样让它...
__dopostback和updatepanel问题
【招聘】c#系列图书兼职作者
net强名称程序集如何引用非强名称程序集?(顶者有...
如何在跳转到其它页面前清空某个session的值?
散分100:首次在华军软件园发布原创软件【keyboa...
vs.net2005中文版,运行c#出错是什么原因?
settimeout()问题,请大家帮忙, 在线等
请教模拟post提交(asp.net)
如何用脚本判断asp.net中的服务器控件checkboxli...
gridview 和datatable之间怎么转换????
[散分]htm 页面 如何改变主题....急
其他资讯
初学者进来逛逛,教你用socancode一步一步写一个简...
c#调用dll的问题??求救...
大家好,我有个treeview的问题
求c# 写的a*算法,最好有示例源码。
.net终于没有躲过csdn的毒手~~
如何在datagridview中实现多列排序?大于2列的,...
vb.net有窗体程序如何以系统服务方式运行?
多天没有解决的问题,没时间在自己研究了,各位哥...
csv 文件问题遇到换行符怎么办?
修改记录时页面中用sqldatasource绑定的dropdown...
谁有asp.net服务器控件开发一书
如何实现跟163邮箱一样的上传文件功能
看成败人生豪迈,只不过是从头再来啊啊
服务器的问题
vs2003无法新建
用testdriven做单元测试为什么说“提供了一个无效...
问个设置的问题
dropdownlist得到选择项的...
自己用c#写的一个window服务,启用的时候提示"本...
急!!!索引超出了数组界限的问题
快速检索
分类导航标签a
Web 开发CGI
产品/厂家中国软件技术大会
C++ BuilderActiveX/COM/DCOM
移动平台BREW技术论坛
其他数据库开发DBTOOLS
企业开发Exchange
Web 开发JavaScript
JavaNetBeans
WebSphere企业门户/WS
其他数据库开发其他
Web 开发非技术区
其他开发语言其他开发语言
.NET技术.NET Framework
硬件使用装机与升级及其他
DB2数据管理
最新资讯
大家有知道在晶世科技上海做赴微软技术支持的工资...
請高手幫忙咯......急.速度結貼.
m¦ 300分求 我自己写的控件requ...
onmouseout 在线等
masterpage.master中内容为什么不能居顶问题
tchart动态更换图形样式
请问下下:如何将一个表从1个数据库复制到本数据...
有什么书讲消息的吗
为什么我在all3.do里用string dept[] ...
求救!
数据和视频同步的问题
请sqlserver专家来解答
这个控制文件怎么写???
如何在windows mobile平台上调用windows&nb...
查询并汇总,急急急!
[vb]哪位能给我一个.net的form和javascript相结合...
求兼职c/c++,vba等语言
备份的log文件太大,怎么把它搞小啊?
vc2005的初级问题
@#@#@#@#@#@#@#@#@#array[title]怎样进行字符截取...
关于exe感染的问题
怎么让.sis文件再安装时显示我自定义的字符串??...
请问个vs2005&vss有关的问题
solaris下的进程以cron job方式运行的时,它...
有人研究过windows下socket描述符数字大小的规律...
紧急,高手请进:关于设置odbc数据源connect一台...
求助,谢谢了
新手问题:c#做的记事本
c#的高手和正在相学习和正在研究c#的人请进
我想做一个个人理财软件 不知道是何需求
已经实现了在textarea里添加并显示button,但是不...
做毕业设计,以及软件开发,需要帮忙的请进入!
高手~~请~~~
(vb学习中...)时间格式如何进行加减?
文件读写的问题~~想不通~~
笔记本键盘,没有响应
站点导航信息如何实现本地化?
使用case 在while里面出现错误。
inherits="new.form1"中new是什么意思!
老大们帮忙啊!
热门点击
query1.eof表示什么意思?
求一份dxperience7.2.1的完全破解,能发布的?
哪儿可以下载oracle 10g client?
测试帖
c# 如何让一个winform 显示在全屏游戏...
真的很奇怪啊
提交错了怎么办?
高手帮我看这段加记录的代码哪里错了,怎么写不到...
ifndef的作用?
请教高手.把不同控件里的内容保存到一个文件里,...
咨询一个问题:b/s是不是asp项目结构,谢谢?
算法高手请进
求一个sql
在一个web页面上怎么调用一台文件服务器的文件
求助各位高手一道题!!
关于手工分发oracle 10.2客户端 imp、...
如用一tadoquery连接一些动态表,我要进行新增、修...
高分!!!iusr权限怪问题???
续:asp深度揭密(下)
局域网内能互拼通其他机器,但就是不能上网
ruby on rails developer 大...
动态html语言中的div标签具体是做什么的
如果用dodragdrop将listview数据拖到文件夹,类似...
gis项目开发,交流,交易群 33676926
请教!事件查看器里那些id的具体含义。
问一个关于线程的问题,愚翁大哥和各路高手请进啊...
获得句柄后如何操作????
xtreme toolkit pro用户界面控件交流及...
如何读取新彩信的内容
linux下apache服务器的配置问题?
3dmax和vega的不同
求助,msdn总是自动关闭
有关bde administrator 的问题
请教:这段程序是先接受全部输入再逐个判断,还是...
建这样一个视图,多个表相同结构,具体需求如下
求一个比较难的sql语句,有时间的朋友及高手们进...
不知道这样的定义的作用
从内存流读图片的问题?
最近项目中遇到的一些问题
c/s报名系统,用什么开发语言好呢?