gpt4 book ai didi

c# - 将方法转换为调用 Write 四十次的异步方法的正确方法?

转载 作者:太空宇宙 更新时间:2023-11-03 15:56:34 25 4
gpt4 key购买 nike

我有一种方法可以将特殊格式的数据以最快的速度传输到文件中 StreamWriter 可以写入。此时有许多对 StreamReader.Write 的单独调用,因为发现这比缓冲 StreamWriter 已经做的字符串连接/缓冲更快。

所以问题是,我是否等待所有 40 个 Write 调用,其中大部分每次写入 1 到 10 个字符?这看起来很丑。

我能否确保在调用 FlushAsync 之前不会刷新任何内容?如果我使用同步写入,然后在最后调用 FlushAsync,这是否可能会破坏 StreamWriter 缓冲策略?

最终目标是 1) 用户界面没有延迟,2) 尽快保存文件。数据量很大。

最佳答案

你真的需要异步 IO 吗?它通常更占用 CPU(就像你的情况一样 - 你是对的)。只需使用同步 IO 在线程池线程上运行 IO 工作。这可能看起来像这样:

await Task.Run(() => MyIOFunction());

您不必担心并发问题,因为 await 会暂停程序的其余部分,直到后台线程完成。

Async IO 不是基于等待。 IO 完成后,操作系统会回调您。它倾向于使用更多的 CPU。异步 IO 用于以方便的方式解锁 UI 和缩放。这对 CPU 效率没有帮助。

关于c# - 将方法转换为调用 Write 四十次的异步方法的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293337/

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