当前位置: 代码迷 >> PB >> timer()和execute,该如何处理
  详细解决方案

timer()和execute,该如何处理

热度:100   发布时间:2016-04-29 09:50:22.0
timer()和execute
我执行一个存储过程,同时启动了一个timer事件,但是在执行存储过程的时候,timer事件怎么也不运行,这是为什么?

------解决方案--------------------
pb 是单线程的,你在执行存储过程时,线程已经被占用,这时你的应用程序中的任何操作都必须对待该存储过程完成后才能继续。
你可以考虑用另外一个线程来执行timer或存储过程
------解决方案--------------------
IF SharedObjectRegister('n_compute_backstage',ls_thread) = success! THEN
IF SharedObjectGet(ls_thread,n_compute[i]) = success! THEN
n_middle[i].of_setparent(iw_self)
n_compute[i].of_setparent(n_middle[i])

lds_source = Create datastore

dwsyntax_str = Sqlca.SyntaxFromSQL(ls_sql, "", errors)

IF Len(errors) > 0 THEN
MessageBox('提示',as_report_type+'构造语法失败!')
RETURN -1
END IF


lds_source.Create(dwsyntax_str,errors)
IF Len(errors) > 0 THEN
MessageBox('提示',as_report_type+'创建数据源窗口失败!')
RETURN -1
END IF

lds_source.settransobject(sqlca)

ll_rowcount = lds_source.Retrieve()

lds_source.getfullstate(lb_source)
destroy lds_source
n_compute[i].Post of_compute(as_report_type,lb_source,ab_target, ab_template,ai_aligment,ls_sql)
//END IF
ELSE
MessageBox('提示','共享对象失败'+as_report_type)
return -1
END IF
END IF

这段代码对你没什么用,不过里边涉及了一些实现多线程的shareobject系列函数,你可以f1查下他们怎么用。很简单的。
  相关解决方案