diff --git a/src/Binance/Extensions/ServiceCollectionExtensions.cs b/src/Binance/Extensions/ServiceCollectionExtensions.cs index 87d695b0..0ff16358 100644 --- a/src/Binance/Extensions/ServiceCollectionExtensions.cs +++ b/src/Binance/Extensions/ServiceCollectionExtensions.cs @@ -21,16 +21,12 @@ public static IServiceCollection AddBinance(this IServiceCollection services, bo services.AddSingleton(); services.AddSingleton(s => { - if (!BinanceHttpClient.Initializer.IsValueCreated) - { - // Replace initializer. - BinanceHttpClient.Initializer = new Lazy(() => - new BinanceHttpClient( - s.GetService(), - s.GetService(), - s.GetService>(), - s.GetService>()), true); - } + BinanceHttpClient.Initializer = new Lazy(() => + new BinanceHttpClient( + s.GetService(), + s.GetService(), + s.GetService>(), + s.GetService>()), true); return BinanceHttpClient.Instance; }); diff --git a/test/Binance.Tests/Api/BinanceHttpClientTest.cs b/test/Binance.Tests/Api/BinanceHttpClientTest.cs new file mode 100644 index 00000000..acf638f9 --- /dev/null +++ b/test/Binance.Tests/Api/BinanceHttpClientTest.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace Binance.Tests.Api +{ + public class BinanceHttpClientTest + { + [Fact] + public void ServiceProviderDisposeNoThrows() + { + var serviceProvider = new ServiceCollection() + .AddBinance().BuildServiceProvider(); + + var httpClient = serviceProvider.GetService(); + + //Restart simulation + serviceProvider.Dispose(); + + var objectDisposedException = false; + + serviceProvider = new ServiceCollection() + .AddBinance().BuildServiceProvider(); + + var newHttpClient = serviceProvider.GetService(); + + try + { + newHttpClient.RateLimiter.Configure(TimeSpan.FromSeconds(5), 5); + } + catch (ObjectDisposedException) + { + objectDisposedException = true; + } + + Assert.False(objectDisposedException); + Assert.False(newHttpClient.Equals(httpClient)); + } + } +}