File being used by another process. Reason, and solution?
- by pstar
The process cannot access the file
'abc.log' because it is being used by
another process.
Hi, I've seen this exception from my application occationaly but I am still trying to fix that, hope I will get some insight from stackoverflow.
In my application I've have defined a WriteToLog function which will write to a log file.
Also the mainForm of my application will launch a backgroundWorker do some job which also calls the WriteToLog. Maybe two threads access a file will cause a problem? But in my code
I 've already do my best to write flush and close the text file (I think), and here is my code from WriteToLog:
StreamWriter sw = null;
string newText = "";
try
{
//populate the content for newText
sw = File.AppendText(LOG_FILE);
sw.Write(newText);
sw.Flush();
sw.Close();
}
catch (IOException ex)
{
MessageBox.Show("Failed to write to log!\n\t" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (sw != null)
{
sw.Close();
}
}
I think as long as I flush and close the streamWriter, I should be able call the WriteToLog multi-times and in multi-threads isn't it? Or if I am wrong, could I simple make the file open shared, or there are other reason/solutions?