多线程问题。我有一个程序一边往软盘写数据,一边进度条加一。可是当我在运行时,如果切换到其他画面,就出现界面假死的问题。那位大侠帮
我有一个程序一边往软盘写数据,每次写一个Sector,进度条加一,再写一个Sector,进度条再加一,直到写完为止。可是程序在运行时,如果切换到其他画面,就出现界面假死的问题。画面出现白屏,但是程序并没有死,运行结果也正常。这个怎么办啊?那位大侠帮帮忙啊!急啊。 问题点数:40、回复次数:13Top
1 楼miky_Zhou(小老鼠)回复于 2005-08-03 22:40:37 得分 0
还有一个问题是罗列系统当前所有进程。MSDN上有一个例子,但是不能运行,GetProcessModule这个函数找不到啊。怎么做啊。Top
2 楼WYJBCB(阿菜)回复于 2005-08-03 23:21:22 得分 0
加个线程吧Top
3 楼zgce(牧童)回复于 2005-08-03 23:32:40 得分 0
搞两个线程不就解了。
取进程列表的问题的确没有GetProcessModule这个函数呀,不知道楼主看的是哪里的MSDN。
取进程列表用CreateToolhelp32Snapshot 然后是Process32First Process32nextTop
4 楼barbaraboy(第八哥)回复于 2005-08-03 23:33:55 得分 0
在线程中不要进行调用GDI,这样非常容易造成界面的死机,程序运行时,windows系统需要DC来刷新窗口,而线程又需要DC来绘制你的窗口,而DC只能被一个线程所分配。这就导致了冲突。
可以在线程中POSTMESSAGE发送消息给主程序,通知让主程序画图
Top
5 楼miky_Zhou(小老鼠)回复于 2005-08-04 20:55:44 得分 0
罗列当前进程的问题解决了,我在一本书上找到的,与zgce(牧童) 说的方法一致。只是界面假死的问题没有解决。在有的机器上运行正常,不会出现假死,但是在有的机器上就很容易出现,只要移动一下窗口就假死。不知道怎么解决。Top
6 楼Leighf(好好生活,天天向上!)回复于 2005-08-05 08:38:38 得分 0
同问。Top
7 楼miky_Zhou(小老鼠)回复于 2005-09-15 17:03:12 得分 0
没有人吗?我用了两个线程也没有解决问题。Top
8 楼jishiping(JSP 季世平)回复于 2005-09-15 17:11:13 得分 0
界面假死,说明主线程忙,没有时间响应WM_PAINT消息。估计你写软盘的动作是放在主线程中的,否则写出你的代码流程(具体的写软盘代码不需要,但是要注明)。Top
9 楼fjye(老姜)回复于 2005-09-16 00:03:13 得分 0
每个线程里加一个Application->ProcessMessages();试试Top
10 楼feilongzaitian1979(大漠孤烟)回复于 2005-09-18 22:03:52 得分 0
有while循环吗?有的话用搂上的办法,没有的话加个线程吧Top
11 楼zhhhhao(dd)回复于 2005-09-26 14:48:25 得分 0
怎么创建线成
Top
12 楼EagleFew(死牛之祭)回复于 2005-09-26 15:02:20 得分 0
这是因为VCL主线程忙,你可以编写一个函数来实现进度条的渐加。
然后使用VCL主线程来调用这个函数:
Asynchronous(//调用函数名);//VCL主线程的函数名称给忘了
注:如果在程序中有访问VCL控件或者需要处理消息的话,最好使用VCL主线程Top
13 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-09-26 15:57:03 得分 0
线程就可以了Top




