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:
  1. function DeleteFolders(Path: String): boolean;
  2. var
  3.   StartTime: dword;
  4. begin
  5.   Result := False;
  6.   try
  7.     TDirectory.Delete(Path, True);
  8.  
  9.     // dit is de nieuwe loop i.p.v. een sleep(1000)
  10.     StartTime := GetTickCount;
  11.     while DirectoryExists(Path) and (GetTickCount < StartTime + 1000) do
  12.       Sleep(20);
  13.  
  14.     if DirectoryExists(Path) then
  15.     begin
  16.       Logger(Format('Error cleaning up %s. Remove folder before continue', [Path]), etError);
  17.       Result := False;
  18.     end
  19.     else
  20.     begin
  21.       Logger(Format('Cleaning up %s succesful.', [Path]), etNormal);
  22.       Result := True;
  23.     end
  24.   except
  25.     on E: Exception do
  26.     begin
  27.       Logger(Format('Error cleaning up %s', [Path]), etError);
  28.       Logger(Format('System Error Message: %s', [SysErrorMessage(GetLastError)]), etError);
  29.       Logger(Format('Exception Message: %s', [E.Message]), etError);
  30.     end;
  31.   end;
  32. end;