c# - Stream Flush 与 FlushAsync

标签 c# asynchronous

除了 Flush()方法,我注意到 Stream类也有一个 FlushAsync()方法。在什么情况下你会使用 FlushAsync()方法?刷新缓冲区是否如此昂贵以保证异步运行它?

最佳答案

是的,它可能非常昂贵,因为它可能实际上会将数据写入底层媒体。

这些条件中的任何一个都可能为真:

  • 您有很多数据要写入(根据缓冲区大小)。
  • 媒体本身可能非常慢(网络或接口(interface)速度较慢的设备)。
  • 中间可能有抽象层,它们将在有效写入之前进行进一步处理(例如压缩/加密抽象)。

它可能与任何其他写入操作一样昂贵 然后是Async 版本(此外,它有助于 API 一致性)。

FlushAsync() 是如何实现的……一个实现细节,它可能是线程池中的一个简单的Task 或更复杂的东西(异步 I/O 可能涉及操作系统本身)。它甚至可能是同步的(想象一下刷新 MemoryStream,它没有任何缓冲区)。

关于c# - Stream Flush 与 FlushAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337176/

相关文章:

c# - 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回给 C#

c# - ItemDataBound 未触发

c++ - 使用 Boost.ASIO 读取时标准输入管道未关闭

c# 通过outlook 2013发送html电子邮件

c# - DataGridViewComboBoxCell 中的新项目未显示

c# - "One Shot"Property Getters 是否被视为 .NET(或一般)中可接受的编码标准

c# - 处理器数量是否会影响 ASP.NET MVC 4 Web 应用程序中异步线程的性能?

javascript - 很难理解这个在 JavaScript 中检索多个用户信息的 Promise + async wait 示例

C# Chained ContinueWith 不等待上一个任务完成

Javascript:使用 setInterval 同步迭代 for 循环