正如您在下面看到的,我有Parallel.For循环。如果在文件不存在的情况下运行程序,则会出现错误,如“进程无法访问文件'C:\ ShowTime Error Logs \ logFile.txt',因为它正在被另一个进程使用。”如何解决“进程无法访问该文件,因为它正在被另一个进程使用”错误
但是,如果文件存在没有错误。我很困惑,即使文件不存在,我的代码也已经创建了文件。为什么在运行程序之前,如果文件不存在,它会给我一个错误。我该如何解决它?
THX
ErrorLog el = new ErrorLog();
Parallel.For(0, 100000, delegate(int i)
{
el.WriteToShowTimeLog("logFile", "", "", (i).ToString(), "", "", @"C:\");
});
错误日志类具有可变
private static readonly object lock_ = new object();
public void WriteToShowTimeLog(string fileName, string errorMessage, string description, string movieID, string theaterID, string showTimeDate, string folderPath)
{
string filePath = folderPath + @"\ShowTime Error Logs\" + fileName + ".txt";
lock (lock_)
{
if (!Directory.Exists(folderPath + @"\ShowTime Error Logs"))
{
Directory.CreateDirectory(folderPath + @"\ShowTime Error Logs");
}
if (!File.Exists(filePath))
{
File.Create(filePath);
}
using (StreamWriter dosya = new StreamWriter(filePath,true))
{
dosya.WriteLine("TheaterID: " + theaterID);
dosya.WriteLine("MovieID: " + movieID);
dosya.WriteLine("Show Time Date: " + showTimeDate);
dosya.WriteLine("Hata Mesajı: " + errorMessage);
dosya.WriteLine("Açıklama: " + description);
dosya.WriteLine("Hata Alınan Zaman:" + DateTime.Now);
dosya.WriteLine("-------------------------------------------------------------------------------------------------------");
dosya.Close();
}
}
}
我已经尝试过,但结果是一样的,我也尝试检查和创建文件之前并行for循环。 – Bilgehan 2012-04-07 16:59:42
@Bilgehan:向我们展示修改后的代码,以便我们可以看到发生了什么问题。 – 2012-04-07 17:02:17
我已编辑代码。谢谢 – Bilgehan 2012-04-07 17:08:04