【发布时间】:2012-04-11 18:03:58
【问题描述】:
上下文:我有一个实现“会话”的类,在其生命周期内维护与服务器的 TCP 连接。在构造函数中,我使用给定的 IP 地址和要连接的服务器端口创建一个 TcpClient 实例。
public Session(IPAddress ipAddress)
{
Client = new TcpClient(ipAddress.ToString(), 1234); //create a client to a server which we will later use to work with
DataStream = Client.GetStream(); //get the stream for later usage
}
此会话的对象偶尔会向其关联的服务器发送和接收数据。
我现在的问题是:我应该在哪里关闭 TcpClient 及其底层 NetworkStream?
我应该实现 IDisposable 吗?但是如果我的班级的用户忘记调用 Dispose 会发生什么?
我应该实现析构函数(又名终结器)吗?但是我不应该从那里访问托管资源?
感谢您帮助我!
【问题讨论】:
-
@abatishchev:虽然我喜欢听取建议,但我无法遵循您编辑的意图。我发现,代码格式和对问题重要部分的强调很有帮助。此外,提到 TcpClient 的“会员”质量的标题也意味着将问题与其他问题区分开来,尤其是避免建议使用“使用”。请向我解释您编辑的意图。
标签: c# tcp destructor idisposable