如何让以下代码异步运行而不必在线程池上创建额外的线程(换句话说没有Task.Run(...)
)?
Directory.CreateDirectory("\\host\someNetworkDirectory");
理想情况下,我想像这样使用它:
async SomeMethod(){
//...
await Directory.CreateDirectoryAsync("\\host\someNetworkDirectory");
// stuff to do after ensuring the directory exists
//...
}
我尝试this answer(建议使用FileSystemWatcher
),但它不适用于文件夹。
答案 0 :(得分:2)
在操作系统级别,此功能严格同步。 WinAPI只有两个用于创建目录的函数CreateDirectory
和CreateDirectoryEx
。他们都没有接受回电。
因此,您无法避免必须创建一个线程来使其异步。你可以期待的最好的办法就是找到一个可以远离你的图书馆。
答案 1 :(得分:1)
查看静态Task.Run方法。
async SomeMethod() {
//...
await Task.Run(() => Directory.CreateDirectory("\\host\someNetworkDirectory"));
//...
}