Я знаю, что мне нужно избавиться от всех неуправляемых ресурсов в классе или форме ... но что, если я передал сокет классу, то я хочу избавиться от класса и сохранить сокет!
в form1.cs я использую сокет TCP для чтения команд с сервера и у меня есть класс, который отправляет команды на сервер, используя тот же сокет
, поэтому, когда я инициализировал класс .. я передал сокет iиспользовать в form1 к классу .. я задаюсь вопросом, располагает ли сокет в form1.cs, если я вызвал socket.dispose()
из класса?
я должен избавиться от сокета, когда я располагаю класс, или просто socket = null
будет хорошо? (но сокет нужен, даже если я хочу избавиться от класса, потому что я хочу продолжать получать команды с сервера).
класс:
public class TM
{
Socket client;
public TM(Socket socket)
{
client = socket;
}
public void Dispose()
{
client = null; // or client.Dispose()
GC.SuppressFinalize(this);
}
~TM()
{
Dispose();
}
}
form1.cs
TM tm = new TM(client);
private void whatever()
{
StreamReader sr = new StreamReader(new NetworkStream(client));
while ((cmd = sr.ReadLine()) != null) //this socket need to keep receiving commands even if i disposed the class
{
Console.WriteLine(cmd);
}
}
private void Button1_Click(object sender, EventArgs e)
{
tm.Dispose();
}
извините за мой плохой английский, и я надеюсь, что вы поняли мою точку зрения .. заранее спасибо.