From 786e7d0f315015a0cd21418068207da1674709f4 Mon Sep 17 00:00:00 2001 From: Frank Bakker Date: Thu, 6 Jan 2022 08:53:20 +0100 Subject: [PATCH] Make apps dispose just once (#575) --- .../Common/ApplicationContexts/ApplicationContext.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/App/NetDaemon.App/Common/ApplicationContexts/ApplicationContext.cs b/src/App/NetDaemon.App/Common/ApplicationContexts/ApplicationContext.cs index 72ddbabfd..f2104310f 100644 --- a/src/App/NetDaemon.App/Common/ApplicationContexts/ApplicationContext.cs +++ b/src/App/NetDaemon.App/Common/ApplicationContexts/ApplicationContext.cs @@ -12,6 +12,7 @@ namespace NetDaemon.Common public abstract class ApplicationContext : IAsyncDisposable, IApplicationMetadata, IApplicationContext { private readonly IServiceScope? _serviceScope; + private bool _disposed; private Action? _configProvider; @@ -152,12 +153,16 @@ public async Task InitializeAsync() /// public async ValueTask DisposeAsync() { + if (_disposed) return; + + _disposed = true; + if (ApplicationInstance is IAsyncDisposable asyncDisposable) { await asyncDisposable.DisposeAsync().ConfigureAwait(false); } - if (ApplicationInstance is IDisposable disposable) + else if (ApplicationInstance is IDisposable disposable) { disposable.Dispose(); }