В моем коде потока мне нужно подождать, пока файл будет разблокирован, чтобы продолжить его обработку.
Файл потенциально заблокирован другим сторонним потоком (ами), которым я не могу управлять.
В настоящее время я использую этот код в моей теме:
...
while IsFileInUse(FileName) and not Terminated do
begin
Sleep(100);
end;
// process the file
IsFileInUse
код:
function IsFileInUse(const FileName: string): Boolean;
var
Handle: HFILE;
begin
Handle := CreateFile(PChar(FileName),
GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := (Handle = INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(Handle);
end;
Есть ли лучший и более эффективный способ избежать Sleep
* * 1013