忽略飞行中的文件

fie*_*ish 2 c#

当我运行下面的代码时,它会在我的数组中填充指定目录中的文件列表.

这很好.

但是,它还会抓取"正在运行"的文件 - 这意味着当前正在复制到该目录的文件.

这是不好的.

如何忽略那些"飞行中"文件?有没有办法在处理之前检查每个文件以确保它"完全存在"?

string[] files = Directory.GetFiles(ConfigurationSettings.AppSettings.Get("sourcePath"));
        if (files.Length > 0)
        {

            foreach (string filename in files)
            {
                string filenameonly = Path.GetFileName(filename);
                AMPFileEntity afe = new AMPFileEntity(filenameonly);
                afe.processFile();
            }

        }
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 5

不幸的是,没有办法实现你想要的.罗伯特关于打开文件写作的建议解决了问题的一个子集,但没有解决更大的问题

最好将文件系统视为您没有同步功能的多线程对象

无论您尝试使用什么同步构造将文件系统置于"已知状态",用户都有一种方法可以击败它.

解决此问题的最佳方法是正常处理文件并捕获使用"正在运行"的文件导致的异常.这是处理文件系统的唯一理智方式.