F
Flying_zyz
Unregistered / Unconfirmed
GUEST, unregistred user!
按下按钮A,创建该一个线程:(相当于开始拷贝文件)
aThread:=TMyThread.Create(false);
///////////////////////////////////////////////
线程函数如下:(拷贝文件)
procedure TMyThread.Execute;
var
lpFileOp: TSHFileOpStruct;
begin
lpFileOp.Wnd := Application.Handle;
lpFileOp.wFunc := FO_COPY;
lpFileOp.pFrom := PChar('...'+ #0#0);
lpFileOp.pTo := PChar('...'+ #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;
////////////////////////////////////////////////
按下按钮B,终止该线程:(相当于终止拷贝文件)
if TerminateThread(aThread.Handle, 0) then
begin
WaitForSingleObject(Handle, INFINITE);
CloseHandle(aThread.Handle);
end;
但是当我按下按钮B后,再次按A按钮,系统报错:XXX文件正在被另一个人或程序使用。
请问各位大虾这是怎么回事,难道按下B按钮后,线程没有被彻底终止吗?请问我应该怎么做,谢谢了!!
aThread:=TMyThread.Create(false);
///////////////////////////////////////////////
线程函数如下:(拷贝文件)
procedure TMyThread.Execute;
var
lpFileOp: TSHFileOpStruct;
begin
lpFileOp.Wnd := Application.Handle;
lpFileOp.wFunc := FO_COPY;
lpFileOp.pFrom := PChar('...'+ #0#0);
lpFileOp.pTo := PChar('...'+ #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;
////////////////////////////////////////////////
按下按钮B,终止该线程:(相当于终止拷贝文件)
if TerminateThread(aThread.Handle, 0) then
begin
WaitForSingleObject(Handle, INFINITE);
CloseHandle(aThread.Handle);
end;
但是当我按下按钮B后,再次按A按钮,系统报错:XXX文件正在被另一个人或程序使用。
请问各位大虾这是怎么回事,难道按下B按钮后,线程没有被彻底终止吗?请问我应该怎么做,谢谢了!!