@@ -96,15 +96,15 @@ public static void Move(this Entity src, string dest, OverwriteQuery query)
9696 {
9797 if ( ! Io . Exists ( dest ) )
9898 {
99- Io . CreateDirectory ( dest ) ;
99+ Try ( ( ) => Io . CreateDirectory ( dest ) ) ;
100100 Logger . Try ( ( ) => Io . SetCreationTime ( dest , src . CreationTime ) ) ;
101101 Logger . Try ( ( ) => Io . SetLastWriteTime ( dest , src . LastWriteTime ) ) ;
102102 Logger . Try ( ( ) => Io . SetLastAccessTime ( dest , src . LastAccessTime ) ) ;
103103 Logger . Try ( ( ) => Io . SetAttributes ( dest , src . Attributes ) ) ;
104104 }
105105 }
106106 else if ( Io . Exists ( dest ) ) Move ( src , dest , query . Get ( src , new ( dest ) ) ) ;
107- else Io . Move ( src . FullName , dest , true ) ;
107+ else Try ( ( ) => Io . Move ( src . FullName , dest , true ) ) ;
108108 }
109109
110110 /* --------------------------------------------------------------------- */
@@ -127,16 +127,35 @@ private static void Move(this Entity src, string dest, OverwriteMethod method)
127127 {
128128 case OverwriteMethod . Yes :
129129 // Because Move is a little tricky...
130- Io . Copy ( src . FullName , dest , true ) ;
130+ Try ( ( ) => Io . Copy ( src . FullName , dest , true ) ) ;
131131 break ;
132132 case OverwriteMethod . Rename :
133- Io . Move ( src . FullName , IoEx . GetUniqueName ( dest ) , false ) ;
133+ Try ( ( ) => Io . Move ( src . FullName , IoEx . GetUniqueName ( dest ) , false ) ) ;
134134 break ;
135135 case OverwriteMethod . No :
136136 case OverwriteMethod . Cancel :
137137 break ;
138138 }
139139 }
140140
141+ /* --------------------------------------------------------------------- */
142+ ///
143+ /// Try
144+ ///
145+ /// <summary>
146+ /// Tries the specified action up to two times.
147+ /// </summary>
148+ ///
149+ /* --------------------------------------------------------------------- */
150+ private static void Try ( Action action )
151+ {
152+ try { action ( ) ; }
153+ catch ( Exception err )
154+ {
155+ Logger . Warn ( $ "[Retry] { err . Message } ") ;
156+ action ( ) ;
157+ }
158+ }
159+
141160 #endregion
142161}
0 commit comments