diff --git a/SabreTools.Helper/Objects/DATFromDir.cs b/SabreTools.Helper/Objects/DATFromDir.cs
index d9012506..1459beec 100644
--- a/SabreTools.Helper/Objects/DATFromDir.cs
+++ b/SabreTools.Helper/Objects/DATFromDir.cs
@@ -190,18 +190,7 @@ namespace SabreTools
new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism },
file =>
{
- int i = 0;
- while (File.Exists(file) && i < 50)
- {
- try
- {
- Directory.Delete(Path.GetDirectoryName(file), true);
- }
- catch
- {
- i++;
- }
- }
+ FileTools.DeleteFile(file);
});
}
@@ -320,22 +309,7 @@ namespace SabreTools
// Cue to delete the file if it's a copy
if (_copyFiles)
{
- int i = 0;
- while (File.Exists(newItem) && i < 50)
- {
- try
- {
- Directory.Delete(Path.GetDirectoryName(newItem), true);
- }
- catch
- {
- i++;
- }
- }
- if (File.Exists(newItem))
- {
- _clean.Add(newItem);
- }
+ FileTools.DeleteFile(newItem);
}
// Delete the sub temp directory
diff --git a/SabreTools.Helper/Tools/FileTools.cs b/SabreTools.Helper/Tools/FileTools.cs
index 1e9dd060..3d77886f 100644
--- a/SabreTools.Helper/Tools/FileTools.cs
+++ b/SabreTools.Helper/Tools/FileTools.cs
@@ -11,6 +11,7 @@ using System.IO.Compression;
using System.Linq;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
+using System.Threading.Tasks;
namespace SabreTools.Helper
{
@@ -1237,6 +1238,29 @@ namespace SabreTools.Helper
}
}
+ ///
+ /// Delete a file asynchronously
+ ///
+ /// Name of the file to be deleted
+ public async static void DeleteFile(string filename)
+ {
+ FileInfo fi = new FileInfo(filename);
+ await Task.Factory.StartNew(() =>
+ {
+ while (fi.Exists)
+ {
+ try
+ {
+ fi.Delete();
+ }
+ catch
+ {
+
+ }
+ }
+ });
+ }
+
#endregion
}
}