【问题标题】:.Net File IO - How to read file creation date asynchronously.Net File IO - 如何异步读取文件创建日期
【发布时间】:2020-02-13 19:28:12
【问题描述】:

我需要通过 Intranet 网络确定文件的创建日期(异步)。

我已经弄清楚如何使用此链接异步读取文件: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/using-async-for-file-access

获取创建日期的典型方法是使用FileFileInfo 类。但是这些似乎没有直接的异步支持。是否有与File.GetCreationTime() 等效的异步?或者,是否可以从FileStream 确定创建日期?

提前致谢。

【问题讨论】:

  • 在 I/O 方面是否必须是纯异步的,或者创建任务也可以? var creationTime = await Task.Run(() => File.GetCreationTime());
  • 他可能要求一个从未实现过的异步 API。可能是因为无论如何它都被认为是一种快速操作(与重新设计可以传输大量数据的文件相比),因此被认为是多余的或优先级很低。

标签: c# .net file io async-await


【解决方案1】:

没有 BCL 方法可以做到这一点,事实上,您必须自己使用 win32 apis CreateFile 给它正确的方法 flags 使用 OVERLAPPED 结构获取元数据用于异步 I/O(如果它通过网络,这将更有意义)

另一种选择是卸载,这意味着将这项工作卸载到另一个线程并假装它是真的async(它不是),在这种情况下你只需使用Task.Run一个线程池线程。

【讨论】:

  • 感谢您的确认。
猜你喜欢
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
相关资源
最近更新 更多