functionCreateThread(
lpThreadAttributes:Pointer;
dwStackSize:DWORD;
lpStartAddress:TFNThreadStartRoutine;{入口函数的指针}
lpParameter:Pointer;
dwCreationFlags:DWORD;
varlpThreadId:DWORD
):THandle;stdcall;
--------------------------------------------------------------------------------
到了入口函数了,学到这个地方,我查了一个入口函数的标准定义,这个函数的标准返回值应该是DWORD,不过这函数在Delphi的System单元定义的是:TThreadFunc=function(Parameter:Pointer):Integer;我以后会尽量使用DWORD做入口函数的返回值.这个返回值有什么用呢?
等线程退出后,我们用GetExitCodeThread函数获取的退出码就是这个返回值!
如果线程没有退出,GetExitCodeThread获取的退出码将是一个常量STILL_ACTIVE(259);这样我们就可以通过退出码来判断线程是否已退出.
还有一个问题:前面也提到过,线程函数不能是某个类的方法!假如我们非要线程去执行类中的一个方法能否实现呢?
尽管可以用Addr(类名.方法名)或MethodAddress('published区的方法名')获取类中方法的地址,但都不能当做线程的入口函数,原因可能是因为类中的方法的地址是在实例化为对象时动态分配的.
后来换了个思路,其实很简单:在线程函数中再调用方法不就得了,估计TThread也应该是这样.
下面的例子就尝试了用线程调用TForm1类中的方法,并测试了退出码的相关问题.本例效果图:
--------------------------------------------------------------------------------
代码文件:
--------------------------------------------------------------------------------
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls;
type
TForm1=class(TForm)
Button1:TButton;
Button2:TButton;
procedureButton1Click(Sender:TObject);
procedureButton2Click(Sender:TObject);
private
[Delphi]多线程编程(8)多线程同步之CriticalSection(临界区)_IT/计算机_专业资料。[Delphi]多线程编程(8)多线程同步之CriticalSection(临界区)...
之前已经有了两种多线程的同步方法: CriticalSection(临界区) 和 Mutex(互斥), 这两种同步方法差不多, 只是作用域不同; CriticalSection(临界区) 类似于只有一...
[Delphi]多线程编程(13)多线程同步之 Event (事件对象)_IT/计算机_专业资料。[Delphi]多线程编程(13)多线程同步之 Event (事件对象)...
Delphi多线程编程中的技巧 (1)创建线程 MsgThread := TMsgThread.Create(False) ; //创建并执行线程 MsgThread := TMsgThread.Create(True) ; //创建线程后挂起...
多线程:Delphi 线程同步技术详解_IT/计算机_专业资料。Delphi中线程同步技术Delphi 线程同步技术详解作者--高张远瞩摘要:本文对 Delphi 的线程同步技术进行详细的...
[Delphi]多线程编程(16)多线程同步之 WaitableTimer (等待定时器对象)[续二]_IT/计算机_专业资料。[Delphi]多线程编程(16)多线程同步之 WaitableTimer (等待定时...
[Delphi]多线程编程(10)(11)多线程同步之 Mutex (互斥对象)_IT/计算机_专业资料。[Delphi]多线程编程(10)(11)多线程同步之 Mutex (互斥对象)...
delphi 多线程编程 2 在这段程序中, 有三个线程几乎是同时建立, 向窗体中的 ListBox1 中写数据, 最后写出的结果是这样的: 能不能让它们别打架, 一个完了...
技能培训-Windows下Delphi的多线程编程 下 的多线程编程 今天的内容什么是线程 线程的特点 Delphi对线程的支持 线程的优先级 线程的同步 一、什么是线程 先了解...
delphi多线程编程4_IT/计算机_专业资料。delphi 多线程编程 4 接下来该是 WaitableTimer 对象的回调函数了. 多线程编程(16) - 多线程同步之 WaitableTimer (等待...
热门文档