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;

高手看看什么原因
...全文
583 6 打赏 收藏 转发到动态 举报
写回复
用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;是不会出问题的。

看自己代码,其他地方做了什么什么事情。
内容概要:本文介绍了基于低秩逼近代理模型的N-1安全约束经济调度快速计算方法,并提供了完整的Matlab代码实现。该方法针对电力系统中N-1故障场景下的安全约束经济调度(SCED)问题,提出采用低秩逼近技术构建高效代理模型,有效降低高维优化问题的计算维度与复杂度,显著提升多场景下调度方案的求解效率。文中系统阐述了数学建模过程、代理模型构造原理、低秩近似算法推导及其实现流程,特别适用于含高比例可再生能源接入、存在大量不确定性因素的现代电力系统优化调度,能够在保障计算精度的同时满足实时性与准实时性应用需求。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员和工程技术人员,尤其适合从事电力系统经济调度、安全稳定分析、不确定性建模与高性能计算等相关领域的专业人士。; 使用场景及目标:①应用于大规模电力系统在N-1故障条件下的快速安全校核与经济调度决策支持;②为高渗透率新能源接入的电力系统提供高效的多场景优化求解方案;③支撑日前调度、实时调度等对计算速度与精度均有较高要求的工程应用场景。; 阅读建议:读者应结合所提供的Matlab代码深入理解算法实现细节,建议在标准测试系统上复现并调试程序,以掌握低秩逼近方法在电力系统优化中的具体应用技巧,并可根据实际研究方向进行模型拓展、性能对比与算法改进。

16,741

社区成员

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

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