diff --git a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs index ec1dc01c05..485865877b 100644 --- a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs +++ b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs @@ -41,9 +41,10 @@ namespace Tgstation.Server.Host.IO /// /// of the directory to empty. /// The for the operation. - /// A representing the running operation. - static async Task NormalizeAndDelete(DirectoryInfo dir, CancellationToken cancellationToken) + static void NormalizeAndDelete(DirectoryInfo dir, CancellationToken cancellationToken) { + cancellationToken.ThrowIfCancellationRequested(); + // check if we are a symbolic link if (!dir.Attributes.HasFlag(FileAttributes.Directory) || dir.Attributes.HasFlag(FileAttributes.ReparsePoint)) { @@ -51,14 +52,8 @@ namespace Tgstation.Server.Host.IO return; } - await Task.Yield(); - - var tasks = new List(); foreach (var subDir in dir.EnumerateDirectories()) - { - cancellationToken.ThrowIfCancellationRequested(); - tasks.Add(NormalizeAndDelete(subDir, cancellationToken)); - } + NormalizeAndDelete(subDir, cancellationToken); foreach (var file in dir.EnumerateFiles()) { @@ -67,7 +62,6 @@ namespace Tgstation.Server.Host.IO file.Delete(); } - await Task.WhenAll(tasks); cancellationToken.ThrowIfCancellationRequested(); dir.Delete(true); } @@ -158,7 +152,7 @@ namespace Tgstation.Server.Host.IO return Task.Factory.StartNew( () => NormalizeAndDelete(di, cancellationToken), cancellationToken, - BlockingTaskCreationOptions, + TaskCreationOptions.LongRunning, TaskScheduler.Current); }