收录日期:2019/04/26 16:18:25 时间: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,马上中止程序的执行。

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

Googlebot 网络抓取 500 (内部服务器错误)怎么办? 用C#怎么更改excel其中的一个表的名称 VC中文件操作的问题(如何控制文件指针如何按行向前移动) emacs,vi为什么这么被推崇? 那位有.net2003下载,急急急急!!!! 简单代码求修改 MFC ActiveX 继承问题 能回答该问题的高手可以得到200分 过来人感想:世界上妞是无限的,而我们的精力是有限的! 一条题目求解 while(!x!=0)是什么意思? 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 怎么使用RasSetEntryProperties可以设置IPSec预共享密钥 聊天室程序达到预期效果 散分拉....... 求帮做毕业设计 谁有MzTreeView 1。0给我传一个,非常感谢。我的MAIL:vcuser@163.com(官方链接已经失效了) 帮我看看这个代码是怎么用的 这个是给提交的留言以表单的方式发送到邮箱 请问如何设置DNS指向虚拟目录? 一个人事工资 考勤管理系统 添加事假病假后 保存出错 【求助】求一个查找文件关键字的程序(VC++6.0) 怎样合并两个Web项目?? 关于页面回调并执行主页面方法的问题 沙牛博客:股市早8点(每日开盘必读5月17日周四) 交通灯模拟程序中 SetTimer 的使用 关于spring中的命名问题 软件培训 如何用中断方式实现串口通讯?100分! 求一个关于同时显示时间的问题? 修改控件的只读属性 小弟刚学xml,还请大家多多指教 调试时:未处理的“System.Resources.MissingManifestResourceException”类型的异常出现在 mscorlib.dll 中。