- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 .NET Standard 2.1 Preview 8。我构建了一个小程序,基本上从 TcpSocket 写入/读取。读取是通过 Pipe
完成的。
给出以下实现
var pipe = new Pipe();
await pipe.Writer.WriteAsync(new ReadOnlyMemory<byte>(new byte[100]));
await pipe.Writer.FlushAsync();
while (true)
{
var readResult = await pipe.Reader.ReadAsync();
if (readResult.Buffer.Length <= 0)
break;
Console.WriteLine("Buffer length:" + readResult.Buffer.Length);
Console.WriteLine("Buffer start:" + readResult.Buffer.Start.GetInteger());
var position = readResult.Buffer.GetPosition(10);
Console.WriteLine("End position:" + position.GetInteger());
Console.WriteLine();
pipe.Reader.AdvanceTo(position);
}
此场景将 100 个字节写入 PipeWriter
。然后在循环中读取缓冲区,Reader 前进 10 个字节。
这会生成以下输出:
Buffer length:100
Buffer start:0
End position:10
Buffer length:90
Buffer start:10
End position:20
Buffer length:80
Buffer start:20
End position:30
Buffer length:70
Buffer start:30
End position:40
Buffer length:60
Buffer start:40
End position:50
Buffer length:50
Buffer start:50
End position:60
Buffer length:40
Buffer start:60
End position:70
Buffer length:30
Buffer start:70
End position:80
Buffer length:20
Buffer start:80
End position:90
Buffer length:10
Buffer start:90
End position:100
我不明白为什么缓冲区开始,每次迭代位置都前进10。我希望在管道上读取后每次迭代缓冲区开始为 0,当我得到偏移量为 10 的位置时,位置将为 10。每次迭代只有缓冲区大小应减少 10。
是否存在错误或以其他方式定义了位置?
最佳答案
事实证明,SequencePosition.GetInteger()
被认为供内部使用。使用 SequenceReader
(建议 here)对我有用。
由于 SequenceReader
在标准中不可用,我填写了这个 issue .
关于c# - ReadOnlySequence.GetPosition 返回错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697223/
所以我开始尝试使用 Span 来解析消息代码。虽然 api 看起来很容易理解,但我似乎找不到任何方法将切片转换为值。例如,我想将 ReadOnlySequence 转换为 int。当然,我可以调用 T
我使用的是 .NET Standard 2.1 Preview 8。我构建了一个小程序,基本上从 TcpSocket 写入/读取。读取是通过 Pipe 完成的。 给出以下实现 var pipe = n
我尝试从 ReadOnlySequence 中读取一些数据。数据被格式化为帧。每个帧都以 NULL 字节(八位字节 0)结束。 我的代码使用 ReadOnlySequence.PositionOf 搜
如何从 ReadOnlySequence 解析 UTF8 字符串 ReadOnlySequence 由部分组成,由于 UTF8 字符是可变长度的,因此部分中的中断可能位于字符的中间。因此,仅在部件上使
在 Marc Gravell 的 blog post 上对管道进行了精彩介绍之后关于这个主题,我正在尝试用套接字实现管道。 我知道 Marc 已经想出了 Pipelines.Sockets.Unoff
我是一名优秀的程序员,十分优秀!