У меня есть приложение, написанное на Delphi 2006, которое регулярно читает из дискового файла, расположенного в другом месте в сети (100 Мб Ethernet). Иногда чтение по сети занимает очень много времени (например, 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 ;