如何实现System.IO.Directory.CreateDirectory方法的async / await版本?

时间:2016-09-15 11:23:04

标签: io directory async-await

我想知道如何在async/await中实现System.IO namespace方法的{{1}}版本?

1 个答案:

答案 0 :(得分:4)

CreateDirectory是一个奇怪的场景。内置异步版本是理想的,特别是在网络驱动器上打开/创建目录。

通常,如果BCL不直接支持异步,您将能够P / Invoke异步Win32 API。但是,在这种情况下,Win32 API实际上不会公开目录的异步API。所以你必须更低 - 可能直接调用文件系统驱动程序(所有设备驱动程序都支持异步I / O,所以这肯定会有效)。

所以,虽然它并不理想,但在这种情况下你可能会更好地关闭 只是做一个虚假的异步方法,即将呼叫包裹在Task.Run

另外,Windows Store风格的目录API是异步的。他们可能会在Win32 API下调用,但实际上我很怀疑它 - 我希望它们可以作为伪异步方法实现。