Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:有关vba定时器功能的疑问。

1楼
bage 发表于:2016/1/21 14:06:08
vba中有个设置定时器的功能:settimer

我有个疑问是: 如果设置了一个定时器:settimer(2,5000),每5秒执行一个任务。 如果这个任务需要10秒才能结束,这个时候金字塔会出现什么情况呢。

由于vba是单线程的,当一个任务用10秒执行完后,是不是再等5秒执行下一个任务,还是就立即执行下一个任务了。。 金字塔的内部有没有队列维护这些信号? 是否有信号积压的问题??
2楼
王锋 发表于:2016/1/21 14:10:50

定时器是基于消息队列的处理模式的,如果是前面执行需要10秒,那么10秒后会立即执行第三次触发的,中间的第二次会被忽略掉

3楼
bage 发表于:2016/1/21 14:42:53
我想问的是:

这种信号的积压,会不会对金字塔进程有影响呢
4楼
王锋 发表于:2016/1/21 14:53:11
不会影响,定时器在队列中属于优先级较低的那种,如果执行不过来,会丢掉中间一些没有触发的
5楼
bage 发表于:2016/1/21 15:27:23
下午我实际测试了下,一个vba执行需要3秒,但是settimer的时间设置成1秒。

刚开始一切很正常,但是连续跑了20分钟后发现,vba还能执行,但是鼠标点击金字塔菜单栏上的按钮,点击不了,出现了卡住的情况。整个金字塔程序卡住动不了,发单也发不了。

还请检查下原因呢。
6楼
王锋 发表于:2016/1/21 15:41:14
VBA是在主线程执行的,你这么搞等于把主线程都给卡死了
7楼
bage 发表于:2016/1/22 11:08:14
按照你之前说的,主线程执行定时器的时候,不是会跳过中间那些等待的信号的么??

怎么会卡死呢。。主线程的处理逻辑还要优化下啊。

而且,定时器本身处理的时间有的时候是不可预测的,这样,定时器的时间间隔就没法设置了。
[此贴子已经被作者于2016/1/22 11:09:41编辑过]
8楼
王锋 发表于:2016/1/22 12:23:12

你每秒都去处理需要3秒时间的任务,主线程能不卡死吗?

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.18164 s, 2 queries.