关于delphi多线程问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 11:25:00
我自定义了一个带参数过程
procedure showImage(bf: string; showstyle: shortint);
现在要在button1事件中以多线程的方式调用它(用api函数),可以吗?怎么写啊。
多线程很陌生。
请大侠再多说详细一点:bf 和 showstyle最终到底怎么带入到那个过程?麻烦再写一下。

直接这样写不行,因为API方式,参数只有一个指针,但是,指针是万能的,可以传递任意个参数
这样:
procedure showImage(param:pointer);
CreateThread(nil,0,@showImage,@param,0,tid);这样可以建一个线程,第4个参数是参数变量的指针,传过指针后,自己解析即可。

其实这么做没有必要,直接用全局变量就行了。
如:
var bf: string; showstyle: shortint//全局变量,线程中要怎么它们都可以
procedure showImage();
CreateThread(nil,0,@showImage,nil,0,tid);

楼上 所 说通过 API 直接使用可行。

另外你可以从 TThread 继承后 重载 Execute 方法,把斧 bf 和 showstyle 以及 其它可能的 所有显示 ShowImage 相关的可控项都写到这个 TThread 对象的 各个 属性,
在这个 线程对象的 Execute 方法 里做你 想做的 任何 工作,
在启动线程前,初始化 所有属性。

提示:
不过看你 想 显示 照片样,要小心 VCL可视控件的 线程安全问题。