Контекст: У меня есть класс, который реализует «Сеанс», поддерживающий TCP-соединение с сервером в течение его срока службы. В конструкторе я создаю экземпляр TcpClient с заданным IP-адресом и портом сервера для подключения.
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?
Должен ли я реализовать Destructor (он же Finalizer)? Но AFAIK Я никогда не получу доступ к управляемым ресурсам оттуда?
Спасибо за помощь!