关于pb调用进程和线程的问题,高手请进!100分求!讨论就有分!

mnsiii 2004-11-09 04:03:27
是这样的,我现在需要存储数据库中的图片,由于数据较多,可能会很久。这样很浪费时间,在存储的同时据说可以使用进程进行并发操作,让系统响应别的操作。但是如何实现?请高手发表意见。
...全文
227 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
mnsiii 2004-11-10
  • 打赏
  • 举报
回复
我继续up
mnsiii 2004-11-10
  • 打赏
  • 举报
回复
没人帮我up我自己up
davorsuker39 2004-11-10
  • 打赏
  • 举报
回复
UP
mnsiii 2004-11-10
  • 打赏
  • 举报
回复

另外还有一点要问,就是针对我提出的那个数据库存储图片的问题,有什么高招将多线程技术应用进去?
mnsiii 2004-11-10
  • 打赏
  • 举报
回复
我再顶!
mittee 2004-11-09
  • 打赏
  • 举报
回复
线程还是java的强
y3321727 2004-11-09
  • 打赏
  • 举报
回复
SharedObject系列函数
和共享对象有关的函数包括:SharedObjectRegister、SharedObjectGet、SharedObjectUnregister和SharedObjectDirectory函数。
首先,用SharedObjectRegister函数初始化共享对象,并建立一个单独的线程。如:
SharedObjectRegister (“ccuo_thread” ,“thread1” )
其中ccuo_thread是一个共享的自定义类用户对象的类名,thread1是共享对象实例的共享名。如果SharedObjectRegister函数返回Success,则新线程创建成功。
然后,执行指定代码。有两种方法让新线程执行指定的代码:一种是在自定义类用户对象的constructor事件中编写脚本,新线程创建后就会自动执行该事件脚本;另一种方法是使用SharedObjectGet函数。该函数实现共享对象实例的引用,如:
SharedObjectGet ( “thread1” ,inv_thread )
其中inv_thread是用来存储共享对象实例的一个对象变量,要求与ccuo_thread具有同一个类名。
最后,通过使用Post语句,即以inv_thread.Post of_function(agrs)的形式,异步调用共享对象的函数of_function。
在完成任务后,可以用SharedObjectUnregister函数中止线程,也可用SharedObjectDirectory函数列出所有有效的共享对象。
函数调用部分
本文所用Win32 API函数原型为:
Function Ulong FindWindowA ( String lpClassName ,String lpWindowName ) Library “user32.dll”
Function Ulong GetTickCount ( ) Library “kernel32.dll”
Function Ulong GetDesktopWindow ( ) Library “user32.dll”
Function Boolean GetWindowRect ( Ulong hWnd ,ref stc_rect lpRect ) Library “user32.dll”
Function Boolean MoveWindow ( Ulong hWnd ,int X ,int Y ,int nWidth ,int nHeight ,Boolean bRepaint ) Library “user32.dll”
下面具体讨论如何实现消息对话框的居中显示:
//声明对象变量
ccuo_thread lccuo_thread
//创建新线程
SharedObjectRegister (‘ccuo_thread’ ,‘thread_center’ )
//引用实例
SharedObjectGet (‘thread_center’ ,lccuo_thread )
//调用窗口居中函数
lccuo_thread.Post of_center (‘#32770’ ,‘Demostration’ ,2000 )
//创建消息对话框
MessageBox ( ‘Demostration’ ,‘Copyright(c) 2001 by Y.L.Sun’ )
//中止线程
SharedObjectunRegister ( ‘thread_center’ )
y3321727 2004-11-09
  • 打赏
  • 举报
回复
uo_thread1.uf_setparent(uo_argv1) //用中间对象给uo—thread1中的实例变量赋值
uo_thread2.uf_setparent(uo_argv2)
改为
uo_thread1.uf_setparent(uo_arg1) //用中间对象给uo—thread1中的实例变量赋值
uo_thread2.uf_setparent(uo_arg2)
y3321727 2004-11-09
  • 打赏
  • 举报
回复
哥们,你看没有http://lzg.myrice.com/ztwz/gn41.htm
文中有一点为题
uo_thread1.uf_setparent(uo_arg1) //用中间对象给uo—thread1中的实例变量赋值
uo_thread2.uf_setparent(uo_arg2)
改为
uo_thread1.uf_setparent(uo_arg1) //用中间对象给uo—thread1中的实例变量赋值
uo_thread2.uf_setparent(uo_arg2)

就可以运行
handycyw 2004-11-09
  • 打赏
  • 举报
回复
简单的:do while yield() loop,在过程开始写。后面的过程你怎么做都行。
青锋-SS 2004-11-09
  • 打赏
  • 举报
回复
up.
balloonman2002 2004-11-09
  • 打赏
  • 举报
回复
楼上介绍的 http://lzg.myrice.com/ztwz/gn41.htm 一文不是写的很清楚吗
mnsiii 2004-11-09
  • 打赏
  • 举报
回复
怎么做说的详细点呗!我给分的!
wangsaokui 2004-11-09
  • 打赏
  • 举报
回复
UO = user object
mnsiii 2004-11-09
  • 打赏
  • 举报
回复
uo是什么?能不能说得清楚点?
balloonman2002 2004-11-09
  • 打赏
  • 举报
回复
多个UO去做
mnsiii 2004-11-09
  • 打赏
  • 举报
回复
文件系统有文件系统的好处,但是他也有它的局限性,比如一但文件路径发生改变,那就完蛋,我这里试举一个例子来讨论,其实我主要的是想跟大家讨论关于进程和线程的问题,依然谢谢楼上两位兄弟,欢迎大家发表看法!
balloonman2002 2004-11-09
  • 打赏
  • 举报
回复
建议用文件系统,数据库只保存文件路径
bsccxf 2004-11-09
  • 打赏
  • 举报
回复
其实,图片存放成文件系统比较好
以前我也将图片存在数据库中,后来在备份和还原是比较困难
y3321727 2004-11-09
  • 打赏
  • 举报
回复
请登陆 http://lzg.myrice.com/ztwz/gn41.htm

是一个pb多线程的例子

我今天刚看,目前还没有调试通过。

一起来研究:QQ 10958187

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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