为 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()异步打开文件!