Skip to content

Commit 223cc6d

Browse files
committed
fix to try move or copy action up to two times
1 parent b082e64 commit 223cc6d

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

Applications/Ice/Main/Sources/Internal/EntityExtension.cs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)