@@ -20,39 +20,42 @@ internal static void DeleteDirectory(string directory)
20
20
// Try and kill processes we know about in the dir
21
21
ApplicationInteraction . StopProcessesInDirectory ( directory ) ;
22
22
23
- // Try and kill handles in the dir
24
- ApplicationInteraction . ReleaseHandlesInDirectory ( directory ) ;
25
-
26
23
Logging . Log ( "Deleting from {0}" , directory ) ;
27
- PerformDelete ( new DirectoryInfo ( directory ) ) ;
28
-
29
- Logging . Log ( "Ensure Directory {0} has been deleted" , directory ) ;
30
- Retry . Do ( ( ) =>
31
- {
32
- if ( Directory . Exists ( directory ) )
33
- {
34
- throw new Exception ( "Directory still exists" ) ;
35
- }
36
- } , TimeSpan . FromMilliseconds ( 1000 ) ) ;
37
- }
24
+ var directoryInfo = new DirectoryInfo ( directory ) ;
38
25
39
- private static void PerformDelete ( DirectoryInfo directory )
40
- {
41
26
// Disable any read-only flags
42
- directory . Attributes = FileAttributes . Normal ;
27
+ directoryInfo . Attributes = FileAttributes . Normal ;
43
28
44
- foreach ( var dir in directory . EnumerateDirectories ( "*" , SearchOption . AllDirectories ) )
29
+ foreach ( var dir in directoryInfo . EnumerateDirectories ( "*" , SearchOption . AllDirectories ) )
45
30
{
46
31
dir . Attributes = FileAttributes . Normal ;
47
32
}
48
33
49
- foreach ( var file in directory . EnumerateFiles ( "*" , SearchOption . AllDirectories ) )
34
+ foreach ( var file in directoryInfo . EnumerateFiles ( "*" , SearchOption . AllDirectories ) )
50
35
{
51
36
file . Attributes = FileAttributes . Normal ;
52
37
}
53
38
54
39
// Delete directory tree
55
- Retry . Do ( ( ) => directory . Delete ( true ) , TimeSpan . FromMilliseconds ( 1000 ) ) ;
40
+ Retry . Do ( retry =>
41
+ {
42
+ if ( retry > 0 )
43
+ {
44
+ // Try and kill handles in the dir
45
+ ApplicationInteraction . ReleaseHandlesInDirectory ( directory ) ;
46
+ }
47
+
48
+ directoryInfo . Delete ( true ) ;
49
+ } , TimeSpan . FromMilliseconds ( 1000 ) ) ;
50
+
51
+ Logging . Log ( "Ensure Directory {0} has been deleted" , directory ) ;
52
+ Retry . Do ( ( ) =>
53
+ {
54
+ if ( directoryInfo . Exists )
55
+ {
56
+ throw new Exception ( "Directory still exists" ) ;
57
+ }
58
+ } , TimeSpan . FromMilliseconds ( 1000 ) ) ;
56
59
}
57
60
58
61
internal static void CopyDirectory ( string from , string to )
0 commit comments