我有一个用 Delphi 2006 编写的应用程序,它定期从位于网络(100Mb 以太网)上其他地方的磁盘文件读取。有时通过网络读取需要很长时间(如 20 秒)并且应用程序冻结,因为读取是从主线程中的空闲处理程序完成的。
好的,我可以将读取操作放到它自己的线程中,但是我想知道的是是否可以为文件操作指定超时,以便您可以放弃并去做其他事情,或者报告事实上,读取比 20 秒后稍早一些。
function ReadWithTimeout (var Buffer ;
N : integer ;
Timeout : integer) : boolean ;
begin
Result := false
try
SetReadTimeout (Timeout) ; // <==========================???
FileStream.Read (Buffer, N) ;
Result := true ;
except
...
end ;
end ;