gpt4 book ai didi

c# - 管理大型 IStream 的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:37:52 25 4
gpt4 key购买 nike

我正在编写一个 C# 类库,以使用 IStream 通过 COM 自动化传输大量数据。它使用 CreateStreamOnHGlobal用于创建流的 API 调用以及 System.Runtime.InteropServices.COMTypes.IStream 中的方法使用它。

我的问题是,在传输大量数据时,控制内存占用的最佳方法是什么?将 100MB 以上的文件数据加载到内存中似乎很浪费,客户端应用程序需要等到该过程完成才能下载任何内容。

我的计划是创建一个合理大小的流并多次写入。在写入下一个数据 block 之前,返回到开头并从开头开始覆盖。我的处理方式是否正确?有没有更好的方法来解决这个问题?

最佳答案

考虑使用使用属性 FILE_ATTRIBUTE_TEMPORARY 和 FILE_FLAG_DELETE_ON_CLOSE 创建的文件。在那里写你的东西。 Windows 将尝试将其保留在磁盘缓存中,除非内存用完。当您关闭句柄或当您的程序终止(或崩溃!)时,它会自毁。我了解了一下here .

关于c# - 管理大型 IStream 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com