我有一个用Delphi 2006编写的应用程序,它经常从网络上其他位置的磁盘文件中读取数据(100Mb以太网)。偶尔,从网络上读取数据需要很长时间(例如20秒),导致应用程序冻结,因为在主线程的空闲处理程序中进行读取操作。
好的,我可以将读取操作放入其自己的线程中,但我想知道是否可以指定文件操作的超时时间,以便您可以放弃并去做其他事情,或者报告读取操作卡住的事实比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 ;