如何实现System.IO.Directory.CreateDirectory方法的异步/等待版本?

如何实现System.IO.Directory.CreateDirectory方法的异步/等待版本?,io,directory,async-await,Io,Directory,Async Await,我想知道如何在System.IO命名空间中实现该方法的async/await版本。CreateDirectory是一个奇怪的场景。最好内置异步版本,尤其是在网络驱动器上打开/创建目录时 通常,如果BCL不直接支持异步,则可以p/调用异步Win32 API。但是,在本例中,Win32 API实际上并不公开目录的异步API。因此,您必须降低成本—可能直接调用文件系统驱动程序(所有设备驱动程序都支持异步I/O,因此这肯定会起作用) 因此,尽管这并不理想,但在这种情况下,您最好只创建一个伪异步方法,即在

我想知道如何在
System.IO命名空间中实现该方法的
async/await
版本。

CreateDirectory
是一个奇怪的场景。最好内置异步版本,尤其是在网络驱动器上打开/创建目录时

通常,如果BCL不直接支持异步,则可以p/调用异步Win32 API。但是,在本例中,Win32 API实际上并不公开目录的异步API。因此,您必须降低成本—可能直接调用文件系统驱动程序(所有设备驱动程序都支持异步I/O,因此这肯定会起作用)

因此,尽管这并不理想,但在这种情况下,您最好只创建一个伪异步方法,即在
Task.Run
中包装调用


另一方面,Windows应用商店风格的目录API是异步的。它们可能是在Win32 API下调用的,但我实际上相当怀疑——我希望它们是作为伪异步方法实现的。

CreateDirectory
是一个奇怪的场景。最好内置异步版本,尤其是在网络驱动器上打开/创建目录时

通常,如果BCL不直接支持异步,则可以p/调用异步Win32 API。但是,在本例中,Win32 API实际上并不公开目录的异步API。因此,您必须降低成本—可能直接调用文件系统驱动程序(所有设备驱动程序都支持异步I/O,因此这肯定会起作用)

因此,尽管这并不理想,但在这种情况下,您最好只创建一个伪异步方法,即在
Task.Run
中包装调用


另一方面,Windows应用商店风格的目录API是异步的。它们可能是在Win32 API下调用的,但我实际上对此相当怀疑——我希望它们是作为伪异步方法实现的。

Check::虽然自己做一些研究总是很好,但在问这样的填鸭式问题之前,我已经读过你提到的问题。我对在另一个线程上异步运行代码不感兴趣,我希望使用真正的异步方法调用来运行它。您将运行什么
Async
,异步方法在哪里
Directory.CreateDirectory
不是一种
Async
方法,这就是我的问题所在Directory.CreateDirectory'是一个同步方法,我想知道是否有可能编写执行等效操作但运行异步的代码。现在再次阅读该链接,answer清楚地显示了如何执行该操作,只需从非异步方法返回一个任务,然后使用
Task.Run
async wait
callCheck]中调用它。虽然自己做一些研究总是很好的,但在问这样的填鸭式问题之前,我已经阅读了您所指的问题。我对在另一个线程上异步运行代码不感兴趣,我希望使用真正的异步方法调用来运行它。您将运行什么
Async
,异步方法在哪里
Directory.CreateDirectory
不是一种
Async
方法,这就是我的问题所在Directory.CreateDirectory'是一个同步方法,我想知道是否有可能编写执行等效操作但运行异步的代码。现在再次阅读该链接,answer清楚地显示了如何执行该操作,只需从非异步方法返回一个任务,然后使用
Task.Run
async wait
callThank中调用它!现在我知道该怎么做了。在完全异步的应用程序中,伪异步方法不是很好的解决方案:-/谢谢!现在我知道该怎么做了。在完全异步的应用程序中,伪异步方法不是很好的解决方案:-/