收录日期:2019/01/21 20:18:34 时间: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,马上中止程序的执行。

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

敬请指导,看一下问题代码:ADODB.Field (0x80020009) 关于GUI的移植问题for vxworks and wince zend framework C#用api向其他程序的listview插入行 VS2008 模板页的问题~ msflexgrid控件 菜鸟问ollyDBG问题 施瓦辛格主演的《蒸发密令》中那个超酷的服务器上运行的是什么操作系统。高手看看 枚举转换成字符串有何意义? 有关fgets函数的疑问 关于global.asa NullPointerException 学C++学哪本书好呢? xls数据倒入access后,小数点前的0丢失,怎么处理啊 数据结构C++语言描述 微软防火墙接口问题!!! 急!!!!!报错:未处理 System.NullReferenceException 未将(对象引用设置到对象的实例)。 显示错误在这一行代码:DataClass.MyMeans.Login_n = (int)(this.Tag); 急!!!!!报错:未处理 System.NullReferenceException 未将(对象引用设置到对象的实例)。 显示错误在这一行代码:DataClass.MyMeans.Login_n = (int)(this.Tag); 关于加壳的常用函数 int(4) UNSIGNED 的取值范围是多少?varchar(255)可以取多少汉字?可以设置为varchar(600)吗? 书架里的书不能读么? 我安装了VS2005,但是c#的工具箱“数据”下面没有datalist控件,请问该怎么办? 路由器之间的cost是多少?? 无法绑定由多个部分组成的标识符 WebMethod返回值长度不能大于100k? 菜鸟提问:检测有无按下ESC 在使用 at() 函数时出现搜索结果不正确的情况,哪位帮我看看啊!! 求一个算法 怎样用层序的方法建立二叉树,???? 应届毕业生,学c++的 去哪个城市前途比较好点?