Monitoren met sysinternals zal niet zoveel opleveren. Het 'probleem' zit in principe op de NAS (wat ook blijkt aan het feit dat een kleine sleep het probleem oplost).
Ik zou het met een kleine loop oplossen die controleert of de directory nog bestaat en na een timeout pas doorloopt. Een sleep(1000) geeft n.l. ALTIJD een vertraging van 1 seconden terwijl dat lang niet altijd nodig is.
Zoiets:
Delphi Code:
function DeleteFolders(Path: String): boolean;
var
StartTime: dword;
begin
Result := False;
try
TDirectory.Delete(Path, True);
// dit is de nieuwe loop i.p.v. een sleep(1000)
StartTime := GetTickCount;
while DirectoryExists(Path) and (GetTickCount < StartTime + 1000) do
Sleep(20);
if DirectoryExists(Path) then
begin
Logger(Format('Error cleaning up %s. Remove folder before continue', [Path]), etError);
Result := False;
end
else
begin
Logger(Format('Cleaning up %s succesful.', [Path]), etNormal);
Result := True;
end
except
on E: Exception do
begin
Logger(Format('Error cleaning up %s', [Path]), etError);
Logger(Format('System Error Message: %s', [SysErrorMessage(GetLastError)]), etError);
Logger(Format('Exception Message: %s', [E.Message]), etError);
end;
end;
end;
Bookmarks