清除网络流中的数据而不释放它

4
如何在不释放网络流的情况下清除其中的数据?
Dim ns As NetworkStream

编辑:

根据下面James的评论,似乎这个问题还没有得到正确的答案。

我认为需要执行以下操作:

ns = Nothing

清空网络流应该是可以的,但我错了。

1
听起来你把变量“ns”和它所引用的网络流混淆了。 - Craig Gidney
FYI - 将流设置为 nothing 将在某个时候引发垃圾回收,从而实质上将其处理掉。 - James
哦,谢谢你的信息,@James。这是否意味着当它被处理时,其中的资源也将被处理,包括套接字?这是否类似于调用NetworkStream.Close()?如果是这样的话,那么如何清除网络流? - Ryklon Zen
1个回答

7
我理解你所说的“清除网络流”是指你想要清空输入缓冲区?
var buffer = new byte[4096];
while (ns.DataAvailable)
{
    ns.Read(buffer, 0, buffer.Length);
}

这会丢弃所有数据,但保留流以供读取。

如果你的意思是要清除输出缓冲区(在可写流上),我不知道。你可能需要关闭流并创建一个新的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接