//unit2,单独的线程类:type
TMyThread = class(TThread)procedure TMyThread.Execute;
begin
Unit1.Form1.Copy;//调用主窗口的Copy函数
end;//unit1,包含Form的主窗口类:procedure TForm1.Button1Click(Sender: TObject);//按下此按钮后,开始启动线程进行文件拷贝
var
thread: TMyThread;
begin
thread := TMyThread.Create(false);
end;procedure TForm1.Copy;//文件的拷贝函数
var
lpFileOp: TSHFileOpStruct;
begin lpFileOp.Wnd := Application.Handle;
lpFileOp.wFunc := FO_COPY;
lpFileOp.pFrom := PChar('C:/Temp'+ #0#0);
lpFileOp.pTo := PChar('D:/Temp'+ #0#0);
lpFileOp.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
lpFileOp.fAnyOperationsAborted := false; if SHFileOperation(lpFileOp) = 0 then
Application.MessageBox('备份成功!', '提示', MB_OK) else
Application.MessageBox('备份失败!', '提示', MB_OK);
end;程序运行结果是正确的,但是我不知道我这样写是否合理,请大家指教!!
TMyThread = class(TThread)procedure TMyThread.Execute;
begin
Unit1.Form1.Copy;//调用主窗口的Copy函数
end;//unit1,包含Form的主窗口类:procedure TForm1.Button1Click(Sender: TObject);//按下此按钮后,开始启动线程进行文件拷贝
var
thread: TMyThread;
begin
thread := TMyThread.Create(false);
end;procedure TForm1.Copy;//文件的拷贝函数
var
lpFileOp: TSHFileOpStruct;
begin lpFileOp.Wnd := Application.Handle;
lpFileOp.wFunc := FO_COPY;
lpFileOp.pFrom := PChar('C:/Temp'+ #0#0);
lpFileOp.pTo := PChar('D:/Temp'+ #0#0);
lpFileOp.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
lpFileOp.fAnyOperationsAborted := false; if SHFileOperation(lpFileOp) = 0 then
Application.MessageBox('备份成功!', '提示', MB_OK) else
Application.MessageBox('备份失败!', '提示', MB_OK);
end;程序运行结果是正确的,但是我不知道我这样写是否合理,请大家指教!!
解决方案 »
- ADO、BDE的问题
- 怎样移动一条数据库记录?
- 关于FastReport CLX 2.5 的使用问题
- 错在哪里?
- 一个很简单的问题,我是初学者,请高手指点帮助看一看如何实现.在线等待.
- 如何发布C/S的程序??该程序用的是远程数据模块+SocketConnection
- 高分求助: Delphi中TMediaPlayer的问题,急盼高手来回答。~~~
- 一个很菜的问题,大家快来拿分!
- 9个字节,清除BIOS密码。
- 请问怎样知道自己的ADO版本是否是最新的2.6。Delphi5和Access2000/97是否真的有问题(下补丁太大了)。DElphi到底该配哪个数据库?又该用哪个东东来建库,希望从单机和网络两个方面来讲。小子真诚恳请各路高手赐教,谢谢!
- Delphi2006装不上ehlib3.6
- 我在安装ehlib60.bpl包时,出现这样的错误提示:
var
lpFileOp: TSHFileOpStruct;
begin
lpFileOp.Wnd := Application.Handle;
lpFileOp.wFunc := FO_COPY;
lpFileOp.pFrom := PChar('C:/Temp'+ #0#0);
lpFileOp.pTo := PChar('D:/Temp'+ #0#0);
lpFileOp.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
lpFileOp.fAnyOperationsAborted := false; if SHFileOperation(lpFileOp) = 0 then
Application.MessageBox('备份成功!', '提示', MB_OK) else
Application.MessageBox('备份失败!', '提示', MB_OK);
end;
//把上面的代码写放线程的Execute
是 ManualThread.Free;还是 ManualThread.Terminate;还是 ManualThread.Destroy;
-------
试一下就知道了.
如果我要终止这个线程,也就是说想取消拷贝,我应该使用哪个函数?
是 ManualThread.Free;还是 ManualThread.Terminate;还是 ManualThread.Destroy;Terminate.
如果你的FreeOnTerminate为false,那么你还要调用Free.