回复:关于pb的timer事件
我没做过这个东西,就是,想这个办法,你看可以不可以,设置timer的时间是两个过程的最大公约数
然后呢,加一个计数器,计算现在运行了多少次timer事件,计数器是窗口的公共变量
然后呢,这样子来,我假设有A事件是30分钟触发,B事件是40分钟触发,这样子最大公约数是10,timer事件是10分钟触发
然后呢,A事件触发的条件是timer事件触发30/10=3次,A事件触发一次
B事件触发的条件是timer事件触发40/10=4次,B事件触发一次
所以呢,在timer事件里,只要每次都把计数器加一,然后呢,做一个除法,看一下是不是3或者4,就知道要不要触发A或者B事件了
嗯,因为不知道你的窗口要运行多长时间,所以要在计数器到integer的最大值的时候,把他设回0,就是,不要给他溢出,如果你不喜欢做除法,你可以再加一个boolean的变量,设置B事件有没有执行,就是这样子:
integer count = 0 boolean b = false
timer(10)
count++
if(count == 3) { 执行A事件; b = true; }
else if(b == true) { 执行B事件; b = false; count = 0; }
意思就是,每次timer执行,计数加一,如果到第三次执行了,就执行A事件,然后呢,打开B事件的信息号灯,这样子第四次执行的时候,就可以根据信号灯有没有打开执行B事件了,B事件执行完,就把计数器恢复0,把信号灯关上,这样子做可以避开除法,也可以避开溢出,就是,要再加一个窗口的公共变量
我不知道是运算快,还是公共变量占用资源多,所以我不知道哪种方法好,你自己试一下吧,有没有别的办法,我也不知道了