为 a 执行异步 I/O 的旧 .Net 方法FileStream
是使用FileStream.BeginRead()
和FileStream.EndRead()
.
状态的 MSDN 文档FileStream.BeginRead()
:
FileStream 提供两种不同的操作模式:同步 I/O 和异步 I/O。虽然可以使用其中任何一种,但底层操作系统资源可能只允许以其中一种模式进行访问。
默认情况下,FileStream 同步打开操作系统句柄。在 Windows 中,这会减慢异步方法的速度。如果使用异步方法,请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。
.Net 4.5x
为 a 执行异步 I/O 的方式是FileStream
使用Stream.ReadAsync()
.
MSDN 文档FileStream.ReadAsync()
直接链接到Stream.ReadAsync()
. 该文档没有提到任何需要以异步模式打开文件;实际上,文档中的示例代码显然没有这样做。
因此,我假设使用时File.ReadAsync()
无需以异步模式打开文件。
这个假设正确吗?
[编辑]
我刚刚发现了一篇关于使用 Async for File Access 的 MSDN 文章。
这说明:
本主题中的示例使用 FileStream 类,该类具有导致异步 I/O 在操作系统级别发生的选项。通过使用此选项,您可以避免在许多情况下阻塞 ThreadPool 线程。
要启用此选项,请在构造函数调用中指定 useAsync=true 或 options=FileOptions.Asynchronous 参数。
所以现在我在想我应该以异步模式打开文件......如果是这样,有点不幸的是文档中提供的示例代码没有ReadAsync()
异步打开文件!