我正在尝试使用 Dokan(用户模式文件系统帮助程序库)围绕最近推出的新 OneDrive API 创建文件系统的想法。我意识到有现有的工具可以做到这一点,但我想尝试围绕来自服务的只读媒体流制作一个优化版本,以便与 Plex 一起使用。
如果用于访问 OneDrive API 的 Internet 连接是可变的并且我还想下载块并行处理来自 OneDrive 的数据,以最大限度地提高连接带宽。
所有这一切意味着当 Dokan 从驻留在 OneDrive 上的文件中请求字节时,它实际上会从这个缓冲区中读取,而我同时写入它,可能来自并行段的数据中的间隙没有按顺序完成,我不确定这样做最有效的方法是什么!
我认为最简单的方法是分配一个大字节数组,开始填充它,然后当 Dokan 从它读取数据时,对新数组执行 Buffer.BlockCopy,基本上丢弃读取的数据并在最后允许下载和填充更多数据。然后,此过程将尝试将缓冲区保持在其最大大小,因为整个文件流过,向消费者显示它是本地文件。
像这样连续 BlockCopying 一个大字节数组会是一种糟糕的方法吗?是否有一种既定的模式可以在 .NET 中更轻松地实现这样的事情?我已经研究了几个小时,但找不到任何试图做同样事情的例子,即使我认为这很常见!
您能想到的任何建议或示例将非常感激,谢谢!