реализация тайм-аута при чтении файла с помощью Delphi

У меня есть приложение, написанное на 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 ;
5
задан rossmcm 17 November 2010 в 01:46
поделиться