求助:delphi应用中的棘手问题 点击:675 | 回复:5



jingwen

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 10回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2005年4月11日
发表于:2005-04-22 14:46:00
楼主
我的程序是多个耗时的循环要求一起运行,在循环中我用了application.ProcessMessages ;因为若不用此语句,当一个循环运行时则不相应任何别的处理,可是问题是:只能运行一个的循环,两个同样的循环不能同时运行, 我是用按钮点击时间来触发循环的。也就是一个循环正在运行时,点击触发另一个循环的按钮, 则上一个正在运行的循环就会中止,直到第二个循环运行完后,第一个再继续运行,好像被中断了。那么我如何来实现多个相似的循环同时运行????? 敬请指教!!!谢谢!!



yws

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 34回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2001年3月31日
发表于:2005-04-22 23:14:00
1楼
application.ProcessMessages 用来处理按钮、鼠标、事件等,进入循环后若无事件发生,只有等循环结束后才能返回了。要实现你的功能可能需要使用多线程编程。

jingwen

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 10回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2005年4月11日
发表于:2005-04-23 19:06:00
2楼
非常感谢!yws

jingwen

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 10回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2005年4月11日
发表于:2005-04-23 19:06:00
3楼
非常感谢!yws

jingwen

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 10回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2005年4月11日
发表于:2005-04-23 19:33:00
4楼
我在多线程中还要用application.ProcessMessages吗?如果不用好像程序运行时不相应其他事件,用了后效果和不用一样,也许是我多线程没有做好,再请大侠不惜指教!我的程序是实现发脉冲的功能,必然要用到延时程序,如下: procedure delay1 (ms:integer); //延时程序US var start,timeend:int64; begin QueryPerformanceCounter(start); repeat application.ProcessMessages ; QueryPerformanceCounter(timeend) ; until ((timeend-start)>=ms);

jingwen

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 10回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2005年4月11日
发表于:2005-04-23 19:33:00
5楼
我在多线程中还要用application.ProcessMessages吗?如果不用好像程序运行时不相应其他事件,用了后效果和不用一样,也许是我多线程没有做好,再请大侠不惜指教!我的程序是实现发脉冲的功能,必然要用到延时程序,如下: procedure delay1 (ms:integer); //延时程序US var start,timeend:int64; begin QueryPerformanceCounter(start); repeat application.ProcessMessages ; QueryPerformanceCounter(timeend) ; until ((timeend-start)>=ms);

热门招聘
相关主题

官方公众号

智造工程师