首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

pb 两个timer怎么能使其不互相影响

2012-04-12 
pb 两个timer如何能使其不互相影响我用pb写的一个程序,里面有两个timer事件,其中都有sleep,有一个的timer

pb 两个timer如何能使其不互相影响
我用pb写的一个程序,里面有两个timer事件,其中都有sleep,有一个的timer是要到设定的时候才可以执行的,现在的情况是timer1执行的时候sleep了,然后就错过了timer2执行的时间,导致timer2不再执行了,有什么方法可以做到这两个不互相影响吗?

[解决办法]
开启多个timer线程

so_timmer mytimmer//变量声明
mytimmer= create so_timmer
mytimmer.of_setparent(this)
mytimmer.of_start(1,"ue_sendreg")//1秒钟后触发以上this中的ue_sendreg()用户事件
mytimmer.stop()//停止timmer

[解决办法]
上华软论坛搜索多timer的例子就可以了,很简单的
[解决办法]
只能这么说,在timer里面不要用sleep,因为timer和你的程序都是一个线程,你一sleep整个程序就都停下来了。
要么用yield()代替sleep()
要么用多线程
要么用个其他程序写个time控件.
[解决办法]
避免使用sleep,PB就一个线程,sleep整个程序都停了。

用timer(0.1),再设置2个计数变量

假设timer1需要60秒执行一次,那么60/0.1 = 600,在此timer中,每触发一次就将计数器加1,当计数器达到600时执行相应代码,否则什么也不做。

timer2同上处理,根据计数判断是否执行相应代码。

另外,处理的代码可以考虑写成可调用的函数,当需要执行代码时,用POST方式去调用。
[解决办法]
一、pb的sleep会导致主线程停下来,导致假死机现象;
二、可以扩充timing对象实现多个timer事件,以不同的频率触发;
三、的timer事件是不可靠的,程序忙的话经常会出现丢失的现象,如果要求高的话需要用api去实现,
FUNCTION ulong SetTimer(ulong hWnd,ulong nIDEvent,ulong uElapse,,ulong lpTimerFunc) LIBRARY "user32.dll"

热点排行