ネットワーク上の他の場所にあるディスクファイル(100Mbイーサネット)から定期的に読み取るDelphi2006で記述されたアプリがあります。メインスレッドのアイドル状態のハンドラーから読み取りが行われるため、ネットワークを介した読み取りに非常に長い時間(20秒など)がかかり、アプリがフリーズする場合があります。
OK、読み取り操作を独自のスレッドに入れることはできますが、ファイル操作のタイムアウトを指定して、あきらめて他のことをしたり、レポートしたりできるかどうかを知りたいのです。読み取りが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 ;