win95控制权的问题!!!(100分)

D

dzm5773

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个通讯程序,
可是一执行它,其它程序就
不能执行,比如,当它接收
数据时,这个窗口都无法极小化!!
在不接收数据时,窗口可以极小化
或极大化等等!!
请各位大侠指点!!!
并提供实例!!多谢!!!
 
在你的循环中: application.ProcessMessages
或者接受数据的部分做成一个单独的线程
 
用多线程编,即让接收数据的任务在一个THREAD的execute中执行,就没有你所
说的问题了。DELPHI的DEMOS下有例子。
 
您的程序的主要问题是控制系统时间过长,在这个过程中没有能够留给系统足够多的
时间来处理日常的各种消息。因此给人以一种系统反应不过来的印象。

建议:
1。根据您的程序里面各个任务的轻重缓急划分子程序,将每个子程序尽可能地放在
线程中执行,紧迫一点的优先级设得高一些,一般般的优先级设的低一些,线程
在任何一本详尽的Delphi书里都有讲述。至于具体设多少,就看您程序的需要和
对于系统影响的程度了。
2。在处理长事务的循环中,尽可能地放入一些交给系统控制权的代码,例如yifeng
说过的Application.ProcessMessage和线程里面的一些函数。这样做的目的是
使自己的程序显得“有礼貌”,在占用一段时间的处理器以后,让出来给人家用。
当然,“与人方便,自己方便”,对您的程序本身也有好处的。
 
与“茶叶蛋”的意见相同,补充一点:接收数据的程序尽量少用叠带循环,以
便腾出空来检索系统的相应,长时间占用计算机的某种资源是编程者的最大
忌讳,切记!
 
多人接受答案了。
 
顶部