From e37a458d28102c1472944bcc885d6104567f390c Mon Sep 17 00:00:00 2001 From: Coen van den Munckhof Date: Fri, 20 Jan 2023 20:50:48 +0100 Subject: [PATCH 1/2] bugfix closing modules --- src/RepoM.App/App.xaml.cs | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/RepoM.App/App.xaml.cs b/src/RepoM.App/App.xaml.cs index b3b22069..f04a9a17 100644 --- a/src/RepoM.App/App.xaml.cs +++ b/src/RepoM.App/App.xaml.cs @@ -322,22 +322,25 @@ private static void StartModules(List modules) private static void StopModules(List modules) { - var allTasks = Task.WhenAll(modules.Select(async x => + var task = Task.Run(() => { - await x.StopAsync(); - - if (x is IAsyncDisposable asyncDisposable) - { - await asyncDisposable.DisposeAsync(); - } - else if (x is IDisposable disposable) - { - disposable.Dispose(); - } - })); - allTasks.GetAwaiter().GetResult(); - } + return Task.WhenAll(modules.Select(async module => + { + await module.StopAsync().ConfigureAwait(false); + + if (module is IAsyncDisposable asyncDisposable) + { + await asyncDisposable.DisposeAsync().ConfigureAwait(false); + } + else if (module is IDisposable disposable) + { + disposable.Dispose(); + } + })); + }); + task.ConfigureAwait(false).GetAwaiter().GetResult(); + } private static void UseRepositoryMonitor(Container container) { // var repositoryInformationAggregator = container.GetInstance(); From c8f5c3b9711e3b5dcb41ded6fe956e9527e3665e Mon Sep 17 00:00:00 2001 From: Coen van den Munckhof Date: Fri, 20 Jan 2023 21:03:51 +0100 Subject: [PATCH 2/2] fix warnings --- src/RepoM.Api/Git/DefaultRepositoryMonitor.cs | 8 +++++--- src/RepoM.Api/Git/FileRepositoryStore.cs | 7 ++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/RepoM.Api/Git/DefaultRepositoryMonitor.cs b/src/RepoM.Api/Git/DefaultRepositoryMonitor.cs index 5c3e0b30..8f02506a 100644 --- a/src/RepoM.Api/Git/DefaultRepositoryMonitor.cs +++ b/src/RepoM.Api/Git/DefaultRepositoryMonitor.cs @@ -263,11 +263,13 @@ private void OnRepositoryObserverChange(Repository repository) private void DestroyRepositoryObserver(string path) { - if (_repositoryObservers.TryGetValue(path, out IRepositoryObserver observer)) + if (!_repositoryObservers.TryGetValue(path, out IRepositoryObserver? observer)) { - observer.Stop(); - _repositoryObservers.Remove(path); + return; } + + observer.Stop(); + _repositoryObservers.Remove(path); } private void OnRepositoryDeletionDetected(string repoPath) diff --git a/src/RepoM.Api/Git/FileRepositoryStore.cs b/src/RepoM.Api/Git/FileRepositoryStore.cs index babd39d3..6c0e97fb 100644 --- a/src/RepoM.Api/Git/FileRepositoryStore.cs +++ b/src/RepoM.Api/Git/FileRepositoryStore.cs @@ -30,7 +30,12 @@ public void Set(IEnumerable paths) } var file = GetFileName(); - var path = _fileSystem.Directory.GetParent(file).FullName; + var path = _fileSystem.Directory.GetParent(file)?.FullName; + + if (string.IsNullOrWhiteSpace(path)) + { + return; + } if (!_fileSystem.Directory.Exists(path)) {