Fuz*_*ans 4 c# io logging delete-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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为我已经完全删除了日志文件,所以我需要重新创建它.所以我调用一个方法:
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);
}
Run Code Online (Sandbox Code Playgroud)
但是当它尝试重新创建日志文件时,会抛出一个错误,指出:
"System.IO.IOException:进程无法访问文件'~~',因为它正被另一个进程使用."
所以似乎在我调用删除文件时它一直在访问它?我打电话给我时需要处理什么file.delete吗?
我不知道细节,但是有很多原因可以解释为什么在删除现有文件后文件名不能立即用于娱乐:
Mercurial也在Windows上遇到了这个问题.如果您执行了一个锁定存储库的命令(使用临时文件完成),然后立即执行另一个需要锁定的命令,或者至少确保没有锁定,那么它可能会因同一类型的错误而失败,文件正在使用中,即使这是两个不同的进程,第一个已经退出.
换句话说,时间表如下:
他们"解决"这个问题的方法是简单地选择一个未在目录中使用的随机文件名,将文件重命名为该名称,然后将其删除.这并没有解决文件遗留一段时间的问题,但它确实释放了文件名并立即将其用于新文件.
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |