My program creates a log file when it starts. The user has the option through settings to “clear the log” which calls a method to delete the log file.
//calls for a YesNo prompt to delete log or not
result = objectMessageBox.ReturnDeleteLogPrompt();
if (result == DialogResult.Yes)
{
//throw prompt
if (File.Exists(objectLog.GetLogLocation()) == true)
{
try
{
//delete the log file
File.Delete(objectLog.GetLogLocation());
//throw balloon tip saying log was cleared
ShowBalloonTip("LogCleared");
}
catch (Exception ee)
{
MessageBox.Show("Error thrown deleting log: " + ee);
System.Windows.Forms.Clipboard.SetText(ee.ToString());
}
}
}
Because I have deleted the log file entirely I need to then recreate it. So I call a method that has this:
try
{
//we create a new log file so it seems that the log has just been cleared
objectLog.CreateLog();
}
catch (Exception ee)
{
MessageBox.Show("Error occured while clearing log:\n" + ee);
}
But when it attempts to recreate the log file it throws an error that says:
“System.IO.IOException: The process cannot access the file ‘~~’ because it is being used by another process.”
So it seems that during my call to delete the file it keeps accessing it? Do I need to dispose of something when I call the file.delete?
Instead of deleting and recreating the same file, can you just clear it out?
Something like this should work for you: