收录日期:2018/11/16 16:16:58 时间:2016/05/23 01:21:15 标签:VCL组件开发及应用
在一个窗体上,有四个定时器控件;并且每个的扫描频率各不相同。
最快的为25毫秒扫描一次。
问题是:运行程序后,在我关闭窗体时,总是几次也关闭不了。
我设置断点,问题在于关闭窗体时,有的定时器还在执行。

我已经在关闭窗体时设置所有的定时器都无效;但是还是不行。

请问如何改善?谢谢大家!!
在Timer事件中:
begin
  TimerName.Enable:=false;
  ///Progress Code
  TimerName.Enable:=true;
end;
25毫秒?

不可能吧,最小只能达到55ms
其实具体是不是25毫秒我也不清楚?只是说非常快而已。
在Timer事件中:
begin
  TimerName.Enable:=false;
  ///Progress Code
  TimerName.Enable:=true;
end;

有什么作用?我不是很明白这个的意思。
试一下啊
我以前遇到过,实际的问题好像不是出在TIMER上,
你用APPLICATION.TERMINATE试试。
to : WGYKING
好像没什么效果。
to airhand:
好像也不行。我觉得问题应该是在TIMER上。
如果我把所有的TIMER事件去掉,那么关闭窗体就非常非常的正常。
设置一个全局变量:P_Run

在窗体初始化中
begin
  P_Run:=False;
end;


在Timer事件中:
begin
  TimerName.Enable:=false;
  if P_Run=True then  eixt;  //!!!!   
  //...其它处理
  
   
  //... 
  TimerName.Enable:=true;
end;

在关闭窗体的事件中:
begin
  P_Run:=True;
end;







fengsx:
  你的代码我看了之后,感觉不是很合适。你在Timer事件中有一句:
if P_Run=True then  eixt;  //!!!!   
如果当时程序执行到该语句之后的代码时,不是照样还要再继续执行直到此次扫描完毕。
我把代码改了一下:
如你设置的全局变量,窗体初始为false;关闭时为false。
不过就是加了一个TTimer控件,不断扫描,检查该全局变量的值。
只要为true,马上中止程序的执行。

谢谢你给我的思路!
本来我以为成功了,可是后来发现,效果还是不行。
请各位再给我点帮助,谢谢!

MFC程序每3秒增加4K内存,求助!! 一个EXCEL导入SQL的问题 求一Oracle 数据库 的插入数据的解决办法。。分不够再加 我的dll串口程序怎么才能读出来? Linux上怎么配置oracle的ODBC数据源? 【简历上应该怎么写才能不让外包和工资开得低的公司打扰你呢】 继承下的析构,用法有点怪 java.lang.OutOfMemoryError: PermGen space 正则 infopath如何与VB结合制作系统? 读文件时,怎么保证每一次都是从物理扇区去读? 查看别人的源代码,显示\"读取中\"的地方,但却显示出其它内容? 多线程文件传输的问题 mfc写列表菜单并加右键菜单 怎么样能(用什么控件)能实现这样的效果吗? EVEREST.Ultimate.Edi.v5.30.Build.1900-hardal.rar 静态方法做数值相加是否存在线程安全问题 【押宝党教授专帖】~【给glyooni发MM】~大家可以围观,但是不要抢哦! 运行jar时提示 java.lang.NoClassDefFoundError: org/apache/logger 在编译安装的make时出现下面的warning,求解决 应用无法访问 Flash调用winform制作的exe程序问题 近十年来移动开发概念炒作不断,OPENGL ES的发展前景如何呀? oracle查询2008-05到2008-09的数据查询语句怎么写,不要存储过程,只要普通的sql语句. 选项卡js扩展修改,如何将\"selected\"设定为变量? 大家说下这个功能怎么实现,在线字体生成 VSS连不上的问题(应该和VSS版本无关勒,可是我对网络那些不懂)--Help!@ 为什么后面没有...?? 完成端口模型的问题 opera吹牛皮不打草稿,称自己有数千亿用户。。。