gpt4 book ai didi

c# - 在 C# 中是否有 System.IO.BufferedStream 的替代方案?

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:54 25 4
gpt4 key购买 nike

我收到以下异常:

System.NotSupportedException : This stream does not support seek operations.
at System.Net.Sockets.NetworkStream.Seek(Int64 offset, SeekOrigin origin)
at System.IO.BufferedStream.FlushRead()
at System.IO.BufferedStream.WriteByte(Byte value)

以下链接显示这是 Microsoft 的一个已知问题。 http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=273186

这个堆栈跟踪显示了两件事:

  1. System.IO.BufferedStream 做了一些荒谬的指针移动操作。 BufferedStream 应该缓冲底层流而不是更多。如果有这样的寻道操作,缓冲区的质量会很差。
  2. 它永远无法在不支持 Seek 的流中稳定工作。

还有其他选择吗?我是否需要在 C# 中将缓冲区与 NetworkStream 一起使用,或者这是否已经缓冲。

编辑:我只想减少对底层套接字流的读/写调用次数。

最佳答案

NetworkStream 已经缓冲。所有接收到的数据都保存在缓冲区中等待您读取。读取调用要么非常快,要么会阻塞等待从网络上的其他对等点接收数据,BufferedStream 在这两种情况下都无济于事。

如果您担心阻塞,那么您可以考虑将底层套接字切换到非阻塞模式。

关于c# - 在 C# 中是否有 System.IO.BufferedStream 的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/551471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com