研究了有关此异常的许多主题,但没有运气。我的简单代码:当我尝试删除正在使用的文件时,C#程序冻结
string t = Path.GetTempFileName();
t = t.Remove(t.Length - 11, 11);
var q = Directory.EnumerateFiles(t, "tmp????.tmp");
var f = q.ToList();
for (int i = 0; i < q.Count(); i++)
{
// if (Helper.CanReadFile(f[i]))
try
{
File.Delete(f[i]);
}
catch (IOException)
{
break;
}
}
我在mainwindow的Closing事件中运行此代码。 因此,它删除了几个文件,进入异常,然后到“break”语句,然后..在某处。只是冻结和暂停调试器导致什么都没有。我尝试了几段代码来查找在删除之前是否使用了该文件,但是它在该代码中获得了一个异常(如Helper.CanReadFile)并暂停了该程序的流程。 我真的不得不删除所有文件,但我需要停止冻结。我该如何处理这个异常,以免冻结我的程序?
一些编辑与大多数断点和信息。
1)有一个例外http://imgur.com/a/k6of3
2)从它的第一步骤中,没有什么http://imgur.com/a/FvWjz
3)回到处理http://imgur.com/a/LMdiA
4)回到事件方法http://imgur.com/a/FlIUf
5)这是从onclose http://imgur.com/a/YQUrZ
6)之后,它在这里循环了一段时间(我使用全局热键)http://imgur.com/a/0qjdf它在msg = 130〜10循环后熄灭,如果删除文件删除部分,我的程序会关闭。
7)冻结部分(无代码运行消息)http://imgur.com/a/WeEGj
“的话..某处”。你必须调查。在break语句中放置一个断点,然后在调试器中一步一步地去做 –
反正break语句是什么?你真的想停止删除所有文件,只是因为删除任何失败? – nozzleman
@nozzleman:你确实是对的。我们无法删除特定文件,但这并不意味着要跳过所有剩余的文件... –