我试图创build一个远程目录,然后写一个文件。 每一个很棒的一次,应用程序尝试写入文件时失败了一个System.IO.DirectoryNotFoundException。
当我编写文件时,我使用返回的DirectoryInfo对象来帮助创build文件path,所以应用程序似乎认为该目录已经创build。 但是,该目录不存在。
在Windows完成创build之前,是否有机会尝试写入目录? 我会认为Directory.CreateDirectory不会返回,直到这个任务完成。
在Windows 10上避免使用Convert.Todouble('Infinity')的FormatException
强制Windows在closures时等待服务停止
在.NET 4.5中编写的软件需要什么版本的.NET运行时?
C#窗体不呈现控件
在linux服务上处理kill – .NET Core 1.1
以编程方式将Microsoft Print中的文件名和path设置为PDF打印机
当X509Certificate2对象的智能卡被移除时的事件
如何检测SD卡何时插入?
WCF wsHttpBinding的Windows身份validation有多安全?
答案 – 是的。 预计文件/目录创建滞后时的行为。 其他评论者提出的普通解决方案是使用重试一段时间。 无论使用什么文件函数,其行为都是相同的:Findfirst,CreateFile,WaitForSingleObject等
另一个解决方案将是使用在Vista和更高版本的Windows操作系统上发现的API的新交易功能。
这个问题是讨厌的,并没有被其他平台上的文件密集型项目的开发人员理解,并转移到Windows:像DOS / CMD脚本,SVN客户端,Cygwin,Perl,各种Java应用程序,各种安装程序等。
我只是有这个问题,对我来说情况是这样的:
if(!exportDirectory.Exists) exportDirectory.Create();
然后在另一个有相同的 DirectoryInfo对象传递给它的类时,我做了一个:
if (!exportDirectory.Exists) throw new DirectoryNotFoundException(exportDirectory.FullName);
而目录显然仍然不存在(虽然我的父目录在Windows中打开,当然,我可以看到它在我面前)。
exportDirectory.Refresh();
来自微软:
刷新对象的状态。 (从FileSystemInfo继承。)
虽然我从来没有经历过这种行为,也无法解释,但一个实用的解决方案是围绕访问目录的呼叫建立一个循环。 在该循环内捕获DirectoryNotFoundException,并在每次短暂暂停后重试访问几次。 如果超过重试次数,则重新发起异常。
此时添加详细的日志记录可能会帮助您确定问题的实际原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。