##说明
- Delphi版本是6
- 这个问题是在客户的环境上出现的,现在没办法再通过改代码的方式去验证
GetLastError
- GetLastError是获取调用系统API出现的报错信息
- 这种类型的错误能够被 try except 方式的异常机制捕获吗?
线程
- 使用Delphi实现的一个线程,代码如下
- GetLastError获取的错误码是2,并没有捕获异常,但是线程持续运行,说明suspend没有起作用
- 另外,线程反复输出如下信息,并没有报错,说明压缩成功,走到suspend方法调用的代码行
正在压缩文件,请稍候...
压缩文件完成
GetLastError:2
正在压缩文件,请稍候...
压缩文件完成
GetLastError:2
正在压缩文件,请稍候...
压缩文件完成
GetLastError:2
……
……
为什么线程没有正常suspend而停止运行,反而是一直循环,根本停不下来
procedure TZipTask.Execute;
var
bSuccess: Boolean;
index: Integer;
iError: Integer;
begin
while not Terminated do
begin
try
index := GetCurrentThreadId;
SendMsg('正在压缩文件,请稍候...');
......//这里调用封装的一个压缩文件的API
if bSuccess then
SendMsg('压缩文件完成')
else
SendMsg('停止压缩文件');
except
on e:Exception do
begin
SendMsg('压缩文件出错' + E.Message);
end;
end;
bComplete := True;
Self.Suspend;
iError := GetLastError;
SendMsg('GetLastError:' + IntToStr(iError));
end;
end;