目录创建和并发

时间:2017-06-11 23:38:44

标签: c# multithreading concurrency asp.net-core

当要求在动作API中创建文件夹时,是否会涉及任何并发问题?如果是这样,正确的解决方案是使用锁,如下面的代码

public async Task<IActionResult> UploadFile(User user){
     ...
     var file = HttpContext.Request.Form.File["SomeFile"];
     ...
     var path = Path.Combile(hostingEnvironment.WebRoot, configurationRoot["BaseDirectory"], user.Id);
     lock(path){
         if(!Directory.Exists(path)){
             Directory.CreateDirectory (path);
         }
     }
     ...
}

使用path变量作为锁定对象也是合乎逻辑的吗?

1 个答案:

答案 0 :(得分:5)

只需致电Directory.CreateDirectory,不要强调并发性。

来自文档(https://msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspx) :

  

如果目录已存在,则此方法不会创建新目录   目录,但它返回现有的DirectoryInfo对象   。目录