以下に示すように、Parallel.Forループがあります。ファイルが存在しない状態でプログラムを実行すると、「別のプロセスで使用されているため、プロセスはファイル'C:\ ShowTime Error Logs\logFile.txt'にアクセスできません」などのエラーが発生します。
ただし、ファイルが存在する場合はエラーはありません。私は混乱しています。ファイルが存在しなくても、私のコードはすでにファイルを作成しています。プログラムを実行する前にファイルが存在しない場合にエラーが発生するのはなぜですか。そして、どうすればそれを修正できますか?
どうも
ErrorLog el = new ErrorLog();
Parallel.For(0, 100000, delegate(int i)
{
el.WriteToShowTimeLog("logFile", "", "", (i).ToString(), "", "", @"C:\");
});
ErrorLogクラスには関数と静的変数があります
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();
}
}
}