创建目录异步(不使用FileSystemWatcher)?

时间:2017-01-18 00:06:25

标签: c# io async-await

如何让以下代码异步运行而不必在线程池上创建额外的线程(换句话说没有Task.Run(...))?

Directory.CreateDirectory("\\host\someNetworkDirectory");

理想情况下,我想像这样使用它:

async SomeMethod(){
    //...
    await Directory.CreateDirectoryAsync("\\host\someNetworkDirectory");
    // stuff to do after ensuring the directory exists
    //...
}

我尝试this answer(建议使用FileSystemWatcher),但它不适用于文件夹。

2 个答案:

答案 0 :(得分:2)

在操作系统级别,此功能严格同步。 WinAPI只有两个用于创建目录的函数CreateDirectoryCreateDirectoryEx。他们都没有接受回电。

因此,您无法避免必须创建一个线程来使其异步。你可以期待的最好的办法就是找到一个可以远离你的图书馆。

答案 1 :(得分:1)

查看静态Task.Run方法。

async SomeMethod() {
    //...
    await Task.Run(() => Directory.CreateDirectory("\\host\someNetworkDirectory"));
    //...
}