我正在尝试使用Dokan(用户模式文件系统帮助程序库)围绕最近推出的新OneDrive API创建文件系统。我意识到现有工具可以做到这一点,但我想尝试围绕从服务中使用Plex的只读媒体流制作优化版本。
我想尝试通过提供某种缓冲区(大约20-50兆字节)来优化体验,如果用于访问OneDrive API的Internet连接可变并且我也想要用于使整个体验更加顺畅从OneDrive并行下载数据块以最大化连接带宽。
所有这些意味着当Dokan从驻留在OneDrive上的文件请求字节时,它将基本上从此缓冲区读取,同时我同时写入它,可能存在来自并行段的数据中的间隙未按顺序完成我不确定这样做的最有效方法是什么!
我认为最简单的方法是分配一个大字节数组,开始填充它,然后当Dokan从中读取数据时,将Buffer.BlockCopy写入一个新数组,基本上丢弃读取数据和在最后留出空间,然后允许下载和填写更多数据。然后,当整个文件流传输时,此过程将尝试将缓冲区维持在其最大大小,向消费者显示它是本地文件。 / p>
连续BlockCopying像这样的大字节数组是一种可怕的方法吗?是否有一种既定的模式可以更容易地在.NET中实现这样的功能?我现在已经研究了几个小时,但是找不到任何试图做同样事情的例子,即使我认为它会很常见!
非常感谢你能想到的任何建议或例子,谢谢!