导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

关于TIMER事件的问题??

hhua2001 2003-12-24 11:32:29
请问各位大侠,我在做一个长时间的循环操作时,为什么TIMER事件不触发(在循环开始前我已经写了TIMER(0.055)),有什么好办法解决这个问题吗??
...全文
24 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
adeva 2003-12-24
我想你可能是由于timer(0.055)没有执行,也可能是很快地就执行了timer(0),不知你当前事件是什么事件?你不妨试试将,timer(0.055)写在窗口的Open事件中,然后将当前事件的timer(0.055)去掉!
回复
hhua2001 2003-12-24
这绝对不是逻辑问题!我想可能是线程问题,但是用了YEILD也没有效果:

代码如下:


string ls_disno,ls_dt_status_mname
LONG I
DATETIME LDT_TIME

LS_DISNO = 'SB'+DW_2.OBJECT.DISNO[DW_2.ROWCOUNT()]

timer(0.055)
FOR I = 1 TO DW_1.ROWCOUNT()
yield()

st_5.text="真在刷新"+STRING(DW_1.OBJECT.DT_STATUS_MNAME[I])
SELECT SYSDATE INTO :LDT_TIME FROM DUAL;
DW_1.OBJECT.dt_status_starttime[I]=LDT_TIME
DW_1.ScrollToRow(I)
if gf_refreshmv(LS_DISNO,STRING(DW_1.OBJECT.DT_STATUS_MNAME[I]))=1 then
SELECT SYSDATE INTO :LDT_TIME FROM DUAL;
DW_1.OBJECT.dt_status_ENDtime[I]=LDT_TIME
il_i_pos = 10000
st_1.of_setpos(il_i_pos/il_max_pos)
// lb_1.additem(STRING(DW_1.OBJECT.DT_STATUS_MNAME[I])+"转换成功")
else
// lb_1.additem(STRING(DW_1.OBJECT.DT_STATUS_MNAME[I])+"转换失败")
end if
DW_1.ScrollToRow(I)
NEXT

IF DW_1.UPDATE() = 1 THEN
il_i_pos = 0


st_5.text = '刷新完毕!'

COMMIT;
this.enabled = false
ELSE
ROLLBACK;
END IF
if il_i_pos = 10000 then
timer(0)
end if;

timer事件代码:


yield()
il_i_pos = il_i_pos + 1

messagebox("",il_i_pos)

if il_i_pos > 10000 then
il_i_pos = 0
end if;

st_1.of_setpos(il_i_pos/il_max_pos)
回复
chrisfy 2003-12-24
还是逻辑有问题,debug一下吧,或把代码贴出
回复
xiao_bai 2003-12-24
脚本写在什么地方
回复
hhua2001 2003-12-24
肯定是执行了的,因为在结束循环后,TIMER事件触发了!
回复
lmby 2003-12-24
TIMER事件不触发?显然TIMER(0.055)没有执行。你debug一下, 看看timer语句执行了么
回复
hhua2001 2003-12-24
怎么没人做出实质性的回答呢??

我真是急呀!!!!!!!!!!!!!!!!
回复
hhua2001 2003-12-24
怎么没人做出实质性的回答呢??

我现在真是急呀!!!!!!!!!!!!!!!!!!!!!!!!!!1
回复
hhua2001 2003-12-24
回复人: mittee(最后一条大白鲨) ( ) 信誉:105 2003-12-24 13:01:00 得分:0


timer事件没有起作用,放在open事件看看


试过了,一回事!!
回复
mittee 2003-12-24
timer事件没有起作用,放在open事件看看
回复
hhua2001 2003-12-24
回复人: adeva(埃得娃) ( ) 信誉:100 2003-12-24 12:32:00 得分:0


我想你可能是由于timer(0.055)没有执行,也可能是很快地就执行了timer(0),不知你当前事件是什么事件?你不妨试试将,timer(0.055)写在窗口的Open事件中,然后将当前事件的timer(0.055)去掉!


我说过了,TIMER(0.055)肯定已经执行了,循环过后,TIMER事件就触发了!!
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

804

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告