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 } }