根据缓冲区生命周期契约审查这个生成的辅助方法。
异步填充租用缓冲区,只暴露已初始化字节,防止陈旧数据泄漏,并让结果在消费者完成前保持有效。
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);
}
}
}
生成代码仅作示例,不代表任何特定模型