HttpClient在使用块的外部未获取null



我有一个类,其中有一个返回http客户端的方法,如下所示。

private HttpClient client;
private HttpClient GetClient()
    {
        if (this.client == null)
        {
            this.client = new HttpClient
            {
                 BaseAddress = new Uri("api")
            };   
            this.client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        }
            return this.client;
    }

我在其他方法中使用这个GetClient方法,比如

                using (var client = this.GetClient())
                {
                    var response = await client.GetAsync($"/abc").ConfigureAwait(false);
                    if (response.IsSuccessStatusCode)
                    {
                        result = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                    }
                }

这个客户端在using块之外没有得到null。下一次当这个方法命中时,客户端就不是null。问题是什么?

为什么希望它为null?处理对象不会将对它的引用设置为null,它只是调用Dispose(),使实例处于不可用状态(如果实现得当(。

另请参阅将对象设置为null vs Dispose((。

另外,不要处理您的HttpClient,请阅读您使用HttpClient错误,这会破坏您的软件的稳定。

最新更新