HttpClient在使用Block的外部没有得到null

时间:2018-11-15 09:37:47

标签: c# asp.net .net wpf http

我有一个类,其中有一个方法可以像下面这样返回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。这是什么问题?

1 个答案:

答案 0 :(得分:1)

为什么您希望它为空?处置对象不会将对它的引用设置为null,它只是调用Dispose(),将实例呈现为无法使用的状态(如果正确实现)。

另请参阅Setting an object to null vs Dispose()

另外,不要处理您的HttpClient,请阅读You're using HttpClient wrong and it is destabilizing your software