diff --git a/Wabbajack.CacheServer/ListValidationService.cs b/Wabbajack.CacheServer/ListValidationService.cs index 7dd8690c..3261a5e6 100644 --- a/Wabbajack.CacheServer/ListValidationService.cs +++ b/Wabbajack.CacheServer/ListValidationService.cs @@ -111,13 +111,13 @@ namespace Wabbajack.CacheServer public static void Start() { - new Thread(() => + Task.Run(async () => { while (true) { try { - ValidateLists().Wait(); + await ValidateLists(); } catch (Exception ex) { @@ -125,9 +125,9 @@ namespace Wabbajack.CacheServer } // Sleep for two hours - Thread.Sleep(1000 * 60 * 60 * 2); + await Task.Delay(1000 * 60 * 60 * 2); } - }).Start(); + }).FireAndForget(); } public static async Task ValidateLists() { diff --git a/Wabbajack.Lib/Downloaders/ManualDownloader.cs b/Wabbajack.Lib/Downloaders/ManualDownloader.cs index b6f6550e..ad316936 100644 --- a/Wabbajack.Lib/Downloaders/ManualDownloader.cs +++ b/Wabbajack.Lib/Downloaders/ManualDownloader.cs @@ -17,6 +17,7 @@ namespace Wabbajack.Lib.Downloaders private FileSystemWatcher _watcher; private Subject _fileEvents = new Subject(); private KnownFolder _downloadfolder; + public readonly AsyncLock Lock = new AsyncLock(); class FileEvent { @@ -81,7 +82,7 @@ namespace Wabbajack.Lib.Downloaders { var downloader = (ManualDownloader)GetDownloader(); var absPath = Path.Combine(downloader._downloadfolder.Path, a.Name); - lock (downloader) + using (await downloader.Lock.Wait()) { try { @@ -95,8 +96,8 @@ namespace Wabbajack.Lib.Downloaders .Select(x => x.FirstOrDefault()) .FirstOrDefaultAsync(); Process.Start(Url); - - absPath = watcher.Wait()?.FullPath; + + absPath = (await watcher)?.FullPath; if (!File.Exists(absPath)) throw new InvalidDataException($"File not found after manual download operation"); File.Move(absPath, destination); diff --git a/Wabbajack.Test/ACompilerTest.cs b/Wabbajack.Test/ACompilerTest.cs index 875e29ec..77ce1409 100644 --- a/Wabbajack.Test/ACompilerTest.cs +++ b/Wabbajack.Test/ACompilerTest.cs @@ -45,11 +45,11 @@ namespace Wabbajack.Test protected async Task CompileAndInstall(string profile) { var compiler = await ConfigureAndRunCompiler(profile); - Install(compiler); + await Install(compiler); return compiler.ModList; } - protected void Install(MO2Compiler compiler) + protected async Task Install(MO2Compiler compiler) { var modlist = AInstaller.LoadFromFile(compiler.ModListOutputFile); var installer = new MO2Installer( @@ -59,7 +59,7 @@ namespace Wabbajack.Test downloadFolder: utils.DownloadsFolder); installer.WarnOnOverwrite = false; installer.GameFolder = utils.GameFolder; - installer.Begin().Wait(); + await installer.Begin(); } } } diff --git a/Wabbajack.Test/AVortexCompilerTest.cs b/Wabbajack.Test/AVortexCompilerTest.cs index c7433f87..1f9c7466 100644 --- a/Wabbajack.Test/AVortexCompilerTest.cs +++ b/Wabbajack.Test/AVortexCompilerTest.cs @@ -56,11 +56,11 @@ namespace Wabbajack.Test protected async Task CompileAndInstall() { var vortexCompiler = await ConfigureAndRunCompiler(); - Install(vortexCompiler); + await Install(vortexCompiler); return vortexCompiler.ModList; } - protected void Install(VortexCompiler vortexCompiler) + protected async Task Install(VortexCompiler vortexCompiler) { var modList = AInstaller.LoadFromFile(vortexCompiler.ModListOutputFile); var installer = new MO2Installer( @@ -71,7 +71,7 @@ namespace Wabbajack.Test { GameFolder = utils.GameFolder, }; - installer.Begin().Wait(); + await installer.Begin(); } } }