进程无法访问文件异常

Process cannot access the file exception

因为猜测这种异常的原因是很常见的。但让我解释一下我面临的确切情况。请找到我的代码块的概述。

 Task.Factory.StartNew(()=> Method1());

 private void Method1()
 {

     //A process which loads the file and uploads it to server. If the file was large, it will take some amount of time.
     using (var fileStream = System.IO.File.OpenRead(filePath))
        {
           //Upload file
        }

    //Once uploads deletes from local.
    File.Delete(path);
 }

在上传文件之前调用了删除方法,因为我使用了单独的任务。所以我得到进程无法访问文件的异常。

上传结束后我应该删除文件。需要一些建议。

TPL 继续

你也可以在这里使用 contnuewith 因为

  1. 您要上传文件
  2. 更新完成后你想删除文件

你做不到

Task t =Task.Factory.StartNew(()=> Method1());//remove delete file form method one 
t.ContinueWith((as)=> {File.Delete(path);} );

以上代码可能存在语法错误,请在visual studio

中解决

单身构造

当你在不同的线程上上传和删除文件时,我建议你 利用信号结构

public class test 
{
 private static AutoResetEvent event_2 = new AutoResetEvent(false);

 public void uploadfile()
 {
   ///do file updating 
   //than give signale 
   event_2.set();
 }

 public void deletefile()
 {
    event_2.WaitOne();
    //delete file 
 }
}

这似乎不是线程问题,看起来您要删除的文件不存在,因此您最好通过文件退出方法检查文件是否存在

if (File.Exists(path))
{
 File.Delete(path);
}