审查生成的池化帧读取器

来自 Span<T> 与 Memory<T>
C# 14 / .NET 10 高级 10分钟 找出 4处问题

根据缓冲区生命周期契约审查这个生成的辅助方法。

异步填充租用缓冲区,只暴露已初始化字节,防止陈旧数据泄漏,并让结果在消费者完成前保持有效。

csharp
using System;
using System.Buffers;
using System.Threading.Tasks;

public static class FrameReader
{
    public static async Task<ReadOnlyMemory<byte>> ReadAsync(
        int requested,
        Func<Memory<byte>, Task<int>> fill)
    {
        byte[] buffer = ArrayPool<byte>.Shared.Rent(requested);
        try
        {
            int written = await fill(buffer);
            Memory<byte> result = buffer;
            return result;
        }
        finally
        {
            ArrayPool<byte>.Shared.Return(buffer);
        }
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误