研究了有關此異常的許多主題,但沒有運氣。我的簡單代碼:當我嘗試刪除正在使用的文件時,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:你確實是對的。我們無法刪除特定文件,但這並不意味着要跳過所有剩餘的文件... –