Tor*_*gen 4 .net c# backgroundworker visual-studio-2008
我在这里完全糊涂了,
我的代码抛出异常,因为File.Exists()返回false
public override sealed TCargo ReadFile(string fileName)
{
if (!File.Exists(fileName))
{
throw new ArgumentException("Provided file name does not exist", "fileName");
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio在throw语句中断,我立即检查File.Exists(fileName)在即时窗口中的值.它回来了true.当我将断点拖回到if语句并再次执行时,它会再次抛出.
fileName是文件的绝对路径.我不是在创建文件,也不是写文件(它一直都在那里).如果我将路径粘贴到记事本中的打开对话框中,它会毫无问题地读取文件.
代码在后台工作程序中执行.这是我能想到的唯一复杂因素.我很肯定文件还没有在工作线程或其他地方打开过.
这里发生了什么?
Ana*_*tts 13
我不知道发生了什么,但为什么你需要File.Exists测试呢?你真正感兴趣的是,"我可以阅读这个文件吗?" 除了File Not Found之外的其他许多东西都可能出错.
更不用说,执行File.Exists测试是一种竞争条件,因为在您完成测试之后,但在打开文件之前,文件可能会消失.只需打开文件,这是您可以做的最佳测试,以确定您是否可以读取该文件.
| 归档时间: |
|
| 查看次数: |
9526 次 |
| 最近记录: |