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);
        }
示例#5
0
            public void Dispose()
            {
                if (!_isDisposed)
                {
                    using (_cancellationTokenSource)
                    {
                        _cancellationTokenSource.Cancel();

                        ResponseSender.Dispose();
                        Plugin.Dispose();
                        _pluginFactory.Dispose();
                    }

                    GC.SuppressFinalize(this);

                    _isDisposed = true;
                }
            }
示例#6
0
 public override Task StopAsync(CancellationToken cancellationToken)
 {
     pluginLoader.Dispose();
     return(Task.CompletedTask);
 }
示例#7
0
 /// <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();
 }
示例#8
0
 /// <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.");
 }