我观察到在调用 TDirectory.Delete(x) 后立即调用 DirectoryExists(x) 返回 true,如果要删除的文件夹中的文件很少并且文件夹处于打开状态(在 Total Commander 中)。
换句话说:
begin
TDirectory.Delete('x', true); <-- 'Delete' exited but the folder is still not fully deleted
if SysUtils.DirectoryExists('x')... <-- This returns true
end;
Run Code Online (Sandbox Code Playgroud)
这是正常行为吗?
“解决方案”是这样的:
begin
TDirectory.Delete('x', true);
Sleep(1000); //wait for Delete to finish
if SysUtils.DirectoryExists('x')...
end;
Run Code Online (Sandbox Code Playgroud)
问题:我如何知道 Delete 何时准备就绪(如何消除睡眠)?
注意:Total Commander 不会阻止文件夹的删除(我猜),因为文件夹无论如何都会被删除(一段时间后)。