C# 删除文件时无法尝试捕获
我想删除一个文件,以防它被另一个进程锁定,即使我已经设置了try catch,但程序仍然是fi.delete()的暗现金,所以如何修复它 “System.UnauthorizedAccessException”类型的首次意外异常 发生在mscorlib.dll中 其他信息:无法访问路径“H:\J\R\sound.MP4” 否认C# 删除文件时无法尝试捕获,c#,winforms,C#,Winforms,我想删除一个文件,以防它被另一个进程锁定,即使我已经设置了try catch,但程序仍然是fi.delete()的暗现金,所以如何修复它 “System.UnauthorizedAccessException”类型的首次意外异常 发生在mscorlib.dll中 其他信息:无法访问路径“H:\J\R\sound.MP4” 否认 其帐户用于运行应用程序的用户必须具有该路径的访问权限 有两种方法可以实现这一点: 为您的应用程序配置一个特殊的应用程序池,该应用程序将在具有必要权限(可以访问远程服务器上
其帐户用于运行应用程序的用户必须具有该路径的访问权限 有两种方法可以实现这一点:
- 导航到“调试/异常/公共语言运行时异常/系统”
- 向下滚动到“NullReferenceException”所在的位置,取消选中“throw”复选框,然后选中“user handled”
感谢您的帮助为什么要使用两个catch块?阅读,它描述了第一次出现的异常。您可以从Windows中删除该文件吗?@SalihKaragoz:我复制错误,编辑请尝试捕获所有异常:
catch(Exception ex)
并检查stacktraceMessageBox.Show(例如ToString())代码>它说什么?可能是引发了与未经授权的DaccessException不同的异常
private void GView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
try
{
string cellValue = GView.Rows[e.RowIndex].Cells["NAME"].Value.ToString();
var confirmResult = MessageBox.Show("delete this item " + cellValue,
"Confirm Delete!!",
MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
System.IO.FileInfo fi = new System.IO.FileInfo(cellValue);
fi.Delete();
}
else
{
}
}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show(ex.Message);
}
}
private void GView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
try
{
string cellValue = GView.Rows[e.RowIndex].Cells["NAME"].Value.ToString();
var confirmResult = MessageBox.Show("delete this item " + cellValue,
"Confirm Delete!!",
MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
System.IO.FileInfo fi = new System.IO.FileInfo(cellValue);
fi.Delete();
}
else
{
}
}
catch(System.IO.IOException)
{
// exception when file is in use or any other
}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show(ex.Message);
}
catch(Exception ex)
{
// all other
}
}