我得到一个非常间歇性的“目录不空”错误试图从C#代码中删除目录,但是当我看,目录似乎是空的。
实际情况是这样的:进程A使用同步.Net远程调用调用进程B,进程B从目录中删除文件,然后返回到进程A删除目录本身。 该磁盘是本地连接的NTFS磁盘(可能是SATA)。
我想知道是否有一个可能的竞争条件与NTFS,当你有两个进程合作的方式,进程B的删除调用还没有完全刷新到文件系统?
当然,更明显的答案是,目录真的不是空的时候,在我看之前,其他的东西都清空了,但是我不知道在当前的应用程序中会发生这种情况,因为没有其他的进程会删除文件。
DateTime.Now vs系统时间
如果启用了windows Update,请从.NET进行检查
你如何处理开发人员访问windows服务器?
TimeZoneInfo和CultureInfo的System.DateTime和Caching
使用用户没有安装的字体
如何在C#和windows 7中设置音量?
VS2010嵌套msi安装程序
windows / .Net中的蓝牙API?
WPF richtextBox的冲突语言设置
用C#直接从内存中处理内存映射文件
当然,删除目录在多任务 *** 作系统上是一个危险的冒险。 您总是有另一个进程打开文件的风险。 在场景中未能删除目录有两个主要原因:
特别是麻烦 – 有些是以不妨碍您删除文件的方式打开文件的进程类型,但仍会使删除目录失败并出现此错误。 搜索索引器和反恶意软件适合这个类别。 他们将使用.NET程序中的删除共享fileShare.Delete打开文件。 删除文件正常工作。 但是,文件不会消失,直到他们关闭文件句柄。 所以你不能删除目录,直到他们这样做。
非常难以诊断的是将目录选择为其当前工作目录的过程。 Environment.CurrentDirectory在.NET程序中。 资源管理器往往会触发这个,只要看看目录就足以防止它被删除。
这些事故完全发生在您的控制之外。 你将需要处理它们,捕捉异常是必需的。 稍后,您可以稍后重试,但是您不得不等待多长时间。 重命名目录并给它一个“垃圾”的名字是一个很好的策略。 请注意,windows中的回收站基本上遵循这种情况,不仅仅是回收利用:)
总结以上是内存溢出为你收集整理的错误“目录不是空的。”当目录是empy时全部内容,希望文章能够帮你解决错误“目录不是空的。”当目录是empy时所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)