在我的线程代码中,我需要等待一个文件被解锁才能进一步处理它.
该文件可能被另一个我无法控制的外部线程锁定.
目前我在我的线程中使用此代码:
...
while IsFileInUse(FileName) and not Terminated do
begin
Sleep(100);
end;
// process the file
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
是否有更好,更有效的方法来避免Sleep?
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |