Моя программа создает файл журнала при его запуске. Пользователь имеет возможность с помощью настроек «очистить журнал», который вызывает метод для удаления файла журнала.Почему я не могу создать txt-файл после его удаления?
//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());
}
}
}
Поскольку я полностью удалил файл журнала, мне необходимо его воссоздать. Поэтому я называю метод, который имеет это:
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);
}
Но когда он пытается воссоздать файл журнала он выдает ошибку, которая говорит:
«System.IO.IOException: Процесс не может получить доступ к file '~~', потому что он используется другим процессом. "
Похоже, что во время моего вызова, чтобы удалить файл, он продолжает обращаться к нему? Нужно ли мне что-то утилизировать, когда я вызываю file.delete
?
Что такое трассировка стека? – SLaks
Вы пробовали вызов dispose на objectLog после его удаления? –
Вы уверены, что на самом деле нет другого приложения, в котором открыт файл журнала? Попробуйте использовать procmon и procexp из http://live.sysinternals.com/, чтобы проверить, какие приложения имеют доступ к файлу. –