我需要将一次性物品存放为班级成员。这是HttpClient,它是一次性的,我可以手动处理它或使用它(var client = new ....)。现在想象一下这种情况:
public class Session
{
private HttpClient m_httpClient;
public Session()
{
m_httpClient = new HttpClient();
}
}
如何处置HttpClient
?删除会话时垃圾收集器是否也处理一次性HttpClient
? C ++中有析构函数。在C#中,它不是必需的。我是否应该将会话对象设置为一次性?谢谢。
答案 0 :(得分:4)
你应该通过在你的类上实现IDisposible
来解决这个问题,垃圾收集器不会自动处理这个对象。
下面是简化版,但请检查this article for the best practice以及this question & answer
public class Session : IDisposible
{
private HttpClient m_httpClient;
public Session()
{
m_httpClient = new HttpClient();
}
public void Dispose()
{
m_httpClient.Dispose();
}
}