c# - File.Exists() 返回 false,但不在调试中

标签 c# .net visual-studio-2008 backgroundworker

伙计们,我完全糊涂了,

我的代码抛出异常,因为 File.Exists() 返回 false

public override sealed TCargo ReadFile(string fileName)
{
    if (!File.Exists(fileName))
    {
        throw new ArgumentException("Provided file name does not exist", "fileName");
    }

Visual Studio 在 throw 语句处中断,我立即在即时窗口中检查 File.Exists(fileName) 的值。它返回 true。当我将断点拖回 if 语句并再次执行时,它再次抛出。

fileName 是文件的绝对路径。我没有创建文件,也没有写入文件(它一直在那里)。如果我将路径粘贴到记事本打开的对话框中,它会毫无问题地读取文件。

代码正在后台工作程序中执行。这是我能想到的唯一复杂因素。我确定该文件尚未在工作线程或其他地方打开。

这是怎么回事?

最佳答案

我不知道发生了什么,但为什么您根本需要 File.Exists 测试?您真正感兴趣的是“我可以阅读这个文件吗?”除了未找到文件之外,还有很多其他事情可能会出错。

更不用说,执行 File.Exists 测试是一种竞争条件,因为文件可能会在您完成测试之后但在您打开文件之前消失。只需打开文件,这是确定是否可以读取文件的最佳测试。

关于c# - File.Exists() 返回 false,但不在调试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397552/

相关文章:

c# - 创建一个 "portable".exe(没有安装程序)

c# - 正则表达式仅检测特殊字符之间的数字

.net - Dll 已发布站点,但在构建中丢失

visual-studio - 如何自动将现有项目添加到Visual Studio项目?

c++ - COM 初始化和在 Win32 C++ DLL 中的使用

c# - 如何在我自己的 WPF 应用程序中使用 Visual Studio 11 Dark Theme?

c# - 如何在文本框中使用 double?

C# 按钮不重新定位自己

javascript - 如何将垂直子菜单项与父菜单对齐

c# - 使用 .NET 获取有关 EXE 文件签名的详细信息