2013-08-26 64 views
2

已经在这个错误中挣扎了很长时间。下面是代码的问题该进程无法访问文件,因为其他进程正在使用该文件。

 for (Int32 Counter = 0; Counter < x.Rows.Count; Counter++) 
     { 
      using (FileStream bitmapFile = new FileStream(@"c:/someOlddir/file1.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
      { 
       using (Bitmap uploadedbitmap = new Bitmap(bitmapFile)) 
       { 
        using (System.Drawing.Image uploadedbitmapResized = ExtensionHelpers.Resize(uploadedbitmap, 800, 600, RotateFlipType.RotateNoneFlipNone)) 
        { 
         uploadedbitmapResized.Save(@"c:/someNewdir/file1.txt",System.Drawing.Imaging.ImageFormat.Jpeg); 
        } 
       } 
      } 
      /*errror occurss on this line */ 
      File.SetCreationTime(@"c:/someNewdir/file1.txt",someDateTimeVariable); 

     } 

我这段代码遇到的问题是,它工作得很好的集合中的第30或40张图片,但是当我到了50或60,我得到一个错误说我试图设置日期时间的文件正被另一个进程使用。但是这个错误只发生在我迭代一个大集合并在迭代中的第40或第50个位置时,这怎么可能是前30个图像工作得很好,然后突然一个文件现在被进程锁定了。我有使用语句的一切,但这个错误仍然存​​在。

我是否需要等到文件保存前才能访问它,但这不应该是这样,因为我先保存文件然后尝试访问它。代码有什么问题?

+1

我怀疑这不是你的代码打开文件。这可能是一些其他程序,只是看到你的新文件,并想看看它。反病毒软件喜欢这样做。 –

+0

尝试修改[磁盘写入缓存](http://support.microsoft.com/kb/259716),然后查看问题是否仍然存在。 –

回答

1

我现在找不到这个,但是我记得从我之前的一个项目中,在这种情况下使用using不起作用。

因此,放弃所有使用并手动管理文件关闭。

+0

按照您的建议进行了......保存后,我删除了“uploadedbitmapResized”上的使用语句,并明确称为“uploadedbitmapResized.Dispose()”,这就实现了。但不是使用声明应该照顾的呢? anywheres thx :) –

相关问题