public void Dispose_IsIdempotent() { using (var factory = new PluginFactory(Timeout.InfiniteTimeSpan)) { factory.Dispose(); factory.Dispose(); } }
/// <summary> /// initiates an emergency exit on the current Service /// </summary> private void ExitNow() { while (!factory.Dispose(10000)) { } Environment.Exit(-1); }
/// <summary> /// Is Called after every Dispose of a PluginFactory. When the last Factory is disposed, the Singleton factory is also being disposed /// </summary> internal static void FactoryDisposed() { lock (initializationLock) { activeFactories--; if (activeFactories == 0 && initialized) { singletonFactory.Dispose(); singletonFactory = null; initialized = false; } } }
public async Task GetOrCreateAsync_ThrowsIfDisposed() { var factory = new PluginFactory(Timeout.InfiniteTimeSpan); factory.Dispose(); var exception = await Assert.ThrowsAsync <ObjectDisposedException>( () => factory.GetOrCreateAsync( filePath: "a", arguments: PluginConstants.PluginArguments, requestHandlers: new RequestHandlers(), options: ConnectionOptions.CreateDefault(), sessionCancellationToken: CancellationToken.None)); Assert.Equal(nameof(PluginFactory), exception.ObjectName); }
public void Dispose() { if (!_isDisposed) { using (_cancellationTokenSource) { _cancellationTokenSource.Cancel(); ResponseSender.Dispose(); Plugin.Dispose(); _pluginFactory.Dispose(); } GC.SuppressFinalize(this); _isDisposed = true; } }
public override Task StopAsync(CancellationToken cancellationToken) { pluginLoader.Dispose(); return(Task.CompletedTask); }
/// <summary> /// Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. /// </summary> /// <filterpriority>2</filterpriority> public virtual void Dispose() { innerFactory.Dispose(); }
/// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary> /// <filterpriority>2</filterpriority> public void Dispose() { logger.LogInformation("Disposing Factory..."); factory?.Dispose(); logger.LogInformation("Factory disposed."); }