\\类声明
TMyThread=Class(TThread)
protected
procedure Execute;override;
private
Pfrom:string;
PTo:string;
public
end;
\\执行函数
procedure TMyThread.Execute;
procedure Copy;
var
f:SHFILEOPSTRUCT; //拷贝文件的变量
begin
f.pFrom:=pchar(self.Pfrom);
f.pTo:=Pchar(self.PTo);
f.wFunc:=FO_COPY;
f.Wnd:=Form1.Handle;
f.fFlags:=FOF_FILESONLY+FOF_NOCONFIRMATION+FOF_NOERRORUI+FOF_SILENT;
try
if SHFileOperation(f)<>0 then //拷贝文件函数
begin
Inc(FileUpdateFalse);
form1.Memo1.Lines.Add('目标文件'+self.PTo+'更新失败!');
end
else
inc(FileUpdate);
finally
self.Terminate; //线程完成自动释放
end;
end;begin
Copy;
end;//下面是一个递规查找文件的函数
procedure MyCopy;
var
FileName:string;
ThreadCopy:TMyThread;
begin
.... //这里先查找到文件名
ThreadCopy:=TMyThread.Create(True);
ThreadCopy.Pfrom:=FileName; //传递文件名参数给线程
ThreadCopy.PTo:=ExePath2; //传递目标目录给线程
ThreadCopy.FreeOnTerminate:=True; //线程结束自动释放
ThreadCopy.Resume; //线程继续执行
end;上面是我写的一个拷贝文件的线程,能这样传递参数给线程吗?
如果线程终止.怎么释放掉线程?请教大家,重分相谢!
TMyThread=Class(TThread)
protected
procedure Execute;override;
private
Pfrom:string;
PTo:string;
public
end;
\\执行函数
procedure TMyThread.Execute;
procedure Copy;
var
f:SHFILEOPSTRUCT; //拷贝文件的变量
begin
f.pFrom:=pchar(self.Pfrom);
f.pTo:=Pchar(self.PTo);
f.wFunc:=FO_COPY;
f.Wnd:=Form1.Handle;
f.fFlags:=FOF_FILESONLY+FOF_NOCONFIRMATION+FOF_NOERRORUI+FOF_SILENT;
try
if SHFileOperation(f)<>0 then //拷贝文件函数
begin
Inc(FileUpdateFalse);
form1.Memo1.Lines.Add('目标文件'+self.PTo+'更新失败!');
end
else
inc(FileUpdate);
finally
self.Terminate; //线程完成自动释放
end;
end;begin
Copy;
end;//下面是一个递规查找文件的函数
procedure MyCopy;
var
FileName:string;
ThreadCopy:TMyThread;
begin
.... //这里先查找到文件名
ThreadCopy:=TMyThread.Create(True);
ThreadCopy.Pfrom:=FileName; //传递文件名参数给线程
ThreadCopy.PTo:=ExePath2; //传递目标目录给线程
ThreadCopy.FreeOnTerminate:=True; //线程结束自动释放
ThreadCopy.Resume; //线程继续执行
end;上面是我写的一个拷贝文件的线程,能这样传递参数给线程吗?
如果线程终止.怎么释放掉线程?请教大家,重分相谢!
解决方案 »
- 如何通过程序数据库中得到的信息创建控件
- 大家谈一下怎么从新人过来的,我先说
- 如何在Image上提示字符?
- 可执行文件的图标
- ******************FormActivate出错,好象是焦点的问题,不知道怎么解决***************88
- tquery哪个控件是不是必须用odbc的数据源啊,急急急急急急急急急急急急急急
- 各位有没有把Rave封装成Dll,又或者封装一个调用数据库的DLL?
- 如何使24位的图形转换为256色或16位、8位的图。
- 小弟看了好多个这样的软件加密,软件一安装就找到本机器序列号,要添的就是注册码,哪位大哥能告诉我是怎么实现的?
- 急...,用递归的方法删除空的目录?如何现实的?
- Tadoconnection如何在COM里创建?
- 求购一套DELPHI + Ms SQLSevrver 的进销存的源代码。
self.Terminate; //线程完成自动释放
当线程完毕自动释放的时候就会出错。并且你这样结束的方法似乎不正确。
你要线程自动释放,你要设置线程的OnTerminate属性 ,
你可以参考DELPHI 的一个线程的例题。
我找个时间写篇文章发在Blog上,再贴过来吧。