Application.ProcessMessages;反而卡死掉进程.

huangjacky 2008-12-31 10:03:27
问一个问题
application.processmessages;
怎么会反而把程序给卡死掉?
是直接进程都死了.
单步跟踪到Application.ProcessMessages;这句,过不了,卡死.
不用Application.ProcessMessages;这句 界面会卡,但是一会儿就好了,进程不会死掉.
我的代码:

while not FCapOver do
begin
Application.ProcessMessages;
//----------------------------------------------------------------------
if GetTickCount- FCapStartTime>= FCapOutTime *1000 then//检测5秒钟
begin
FCapIP.StopCap;
FCapOver:=True;
end;
// Sleep(10);
end;

高手看看什么原因
...全文
511 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangjacky 2009-01-04
  • 打赏
  • 举报
回复
自己 线程的问题.
解决了
ZuoBaoquan 2009-01-01
  • 打赏
  • 举报
回复
看上去应该是在多线程代码直接调用了Application.ProcessMessages方法。
但有一点想不通的是LZ说如果不加这行会导致界面卡...莫非这不是多线程代码?或者是FCapIP里面有做了什么吗?

如果是多线程代码的话,由于Application是运行在主线程的全局对象实例,你直接在其他线程里面调用会导致应用程序异常(可能直接挂掉)。
(一般不要在线程代码中去调用Application.ProcessMessages,会乱掉的。)
lcgboy 2008-12-31
  • 打赏
  • 举报
回复
线程同步问题吧?是不是过多的线程同一时间掉用到他
hongqi162 2008-12-31
  • 打赏
  • 举报
回复
FCapIP.StopCap;很有可能和这个有关系
ahejn 2008-12-31
  • 打赏
  • 举报
回复
界面卡死应该跟这段代码无关,其他代码中有否发送消息没有返回之类?另外,sleep是必要的,不然可能会造成CPU占用超高的表象。
gzmhero 2008-12-31
  • 打赏
  • 举报
回复
Application.ProcessMessages;是不会出问题的。

看自己代码,其他地方做了什么什么事情。

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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