线程构造函数(100分)

D

dablyo

Unregistered / Unconfirmed
GUEST, unregistred user!
线程定义
TdyDisThd = class(TThread)
private
offiname: array[0..14] of char;
public
constructor Create(moffi : pchar);
destructor Close;
protected
procedure Execute;
override;
end;
声明和创建
dyDisThd : TdyDisThd;
dyDisThd.Create(@rname);
//这里rname是字符数组
构造函数
constructor TdyDisThd.Create(moffi : pchar);
begin
inherited Create(True);
//这里经常出错,弹出CPU内存,寄存器等内容框
FillChar(offiname,sizeof(offiname),#0);
StrPCopy(offiname,moffi);
Resume;
end;

我查不出什么问题。
 
dyDisThd.Create(@rname);
改为:
dyDisThd := TdyDisThd.Create(@rname);
构造函数中resume的前面加上FreeOnTerminate := True;或者你每次调用前确保已经释放线程。
 
用对象变量创建线程实例,厉害啊。
 
inherited Create(True);
//这里经常出错,弹出CPU内存,寄存器等内容框
===========================================
不是经常出错吧?应该是每次都出错。先学学怎么用类构造实例。
应该这么写:
构造函数
constructor TdyDisThd.Create(moffi : pchar);
begin
// FillChar(offiname,sizeof(offiname),#0);此句毫无意义,注释掉,让你下次记得
StrCopy(offiname,moffi);
inherited Create(False);
end;

其余照陈飞飞的去做!
 
顶部