TcpClient的新实例连接到远程主机。检索并存储其NetworkStream。我是否还必须存储TcpClient本身,以确保它不是垃圾回收?
如果您要回答“您必须存储它以便能够处理它”: 在我的特定情况下,TcpClient通常会存在很长时间(应用程序生命周期),因此处理它并不是必须的。但是,我同意,一般来说,它必须存储只是为了能够调用Dispose。
答案 0 :(得分:2)
如果仍然引用NetworkStream,则不会删除它。垃圾收集器只清理不再引用的对象 - 它并不真正了解它必须收集的对象,它只是跟踪引用。
但是,您可能会发现TcpClient有一个终结器,如果收集了TcpClient,它将使该流无效。保持对TcpClient的引用可能更安全。 (据我从源代码中看到,终结器当前没有 这样做,但不能保证将来不会这样做。)
答案 1 :(得分:1)
如果没有引用该对象,它最终将被垃圾收集,这将使您的NetworkStream无法使用。只要您想使用它,就需要保留该TcpClient对象的引用。