From eed71e1c247adce6478a782a51f8709b93f2c944 Mon Sep 17 00:00:00 2001
From: Justin Swanson <justin.c.swanson@gmail.com>
Date: Sat, 21 Dec 2019 18:26:51 -0600
Subject: [PATCH] Purged a few more Task.Wait() calls

---
 Wabbajack.CacheServer/ListValidationService.cs | 8 ++++----
 Wabbajack.Lib/Downloaders/ManualDownloader.cs  | 7 ++++---
 Wabbajack.Test/ACompilerTest.cs                | 6 +++---
 Wabbajack.Test/AVortexCompilerTest.cs          | 6 +++---
 4 files changed, 14 insertions(+), 13 deletions(-)

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<FileEvent> _fileEvents = new Subject<FileEvent>();
         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<ModList> 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<ModList> 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();
         }
     }
 }