讨论pb多线性,利用timing实现后台打印实现

zjl8008 2011-12-08 03:24:03
昨天我做了个程序中的后台打印。
首先继承了 timing 创建 用户对象 nvo_timing
窗口中加实例变量 nvo_timing timer1
在打印按钮
Timer1.Start(0.01)

在 用户对象 nvo_timing
的timer事件中就可以实现后台打印了
经测试效果还可以,没发现有错误。
以前想用多线程时查到的资料多是利用shareobject的,好像有不少限制,如不能访问全局变量等,不知道timing对象有什么缺点,是否稳定?
欢迎大家讨论交流一下pb多线性的实现方式。
...全文
336 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjl8008 2011-12-12
  • 打赏
  • 举报
回复
好的,明白了,多谢
yyoinge 2011-12-10
  • 打赏
  • 举报
回复
timing不是多线程的,当timing的timer事件执行时,如果该事件的代码运行时间较长,则主程序同样必须等待它执行完毕,才能继续执行。

shareobject才能实现多线程,虽然不能共享全局变量,但是可以进行传参,将全局变量传入

WorldMobile 2011-12-10
  • 打赏
  • 举报
回复
timing非多线程,如果代码执行的时间太长,会影响下次的执行

如代码执行需要10秒,你设置是1秒执行一次,你会发现,会漏执行很多次,


如果代码执行时间太长,还需要精确,建议用多线程来实现即shareobject

如果代码执行时间较短,可以用这种方式,优点,用起来比较简单
zjl8008 2011-12-10
  • 打赏
  • 举报
回复
多进程的方法比较麻烦,用 run(XX.exe+参数)吗?当业务有修改时还得重新生成这个exe
zjl8008 2011-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yyoinge 的回复:]
timing不是多线程的,当timing的timer事件执行时,如果该事件的代码运行时间较长,则主程序同样必须等待它执行完毕,才能继续执行。

shareobject才能实现多线程,虽然不能共享全局变量,但是可以进行传参,将全局变量传入
[/Quote]
timing是多线程吧?我在timer中循环记数并显示在sle_1中,这时我还可以进行在sle_2中手工输入字符啊?
SKY_4K_PPM 2011-12-10
  • 打赏
  • 举报
回复
多进程吧
路人甲cw 2011-12-10
  • 打赏
  • 举报
回复
多进程的成本比多线程高,而且不易控制,用多线程可以完美的解决你的问题。普通定义的Timing是运行在主线程的,主程序默认是一个线程的,所以它们相互影响。
yyoinge 2011-12-10
  • 打赏
  • 举报
回复
你可以自己试一下,假设timing的时间间隔为2秒,而你此时在做一个需要1分钟才能完成的操作,那么在这1分钟内,timing的timer事件是无法被立即执行的,只有等到1分钟后才可以执行

或者你在timer事件中写一个需要执行1分钟的代码,然后设置timing的时间间隔为1分钟,你看看你的主程序还可以运行吗
路人甲cw 2011-12-08
  • 打赏
  • 举报
回复
用Timer也可以做到,但不能保存它能在指定的时间内执行任务,因为它受主线程影响
路人甲cw 2011-12-08
  • 打赏
  • 举报
回复
看我博客:
http://blog.csdn.net/gaoqiangz/article/details/6682895

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧