我只是在编写一个聊天应用程序(服务器),但我遇到了问题。
服务器接受连接,TcpClient
然后创建Connection
类的新实例并将TcpClient
' 引用传递给它。这个新Connection
实例保存了参考以供将来使用。然后将新Connection
实例添加到Users
列表中。
让我们看看伪代码:
while(true)
{
// 1. Accept connection into new Client instance
Client = new TcpClient()
Client = AcceptTcpClient();
// 2. Create new Connection object and pass Client's reference to it.
Connection abc = new Connection(Client);
// Add new user to users collection
Users.Add(Connection);
}
现在该abc
实例引用了 Client 对象。直到这里一切正常,但每次 while() 循环进入下一次迭代时,我都可以在调试器中看到 Client 实例已被处理(我想是由垃圾收集器处理的)。
因此,当另一个迭代开始时,列表中的所有Connection
实例Users
都可以,但它们对引用的TcpClient
引用只是回收的实例。因此连接立即关闭,无法进行任何工作。
你知道问题出在哪里吗?感谢您的回答。
您可能需要确切的源代码 - 如果需要,我当然可以提供。