在.Net 3.5中,我有以下代码。
If File.Exists(sFilePath & IndexFileName & ".NX") Then
Kill(sFilePath & IndexFileName & ".NX")
End If
在运行时,在一个客户端的计算机上,当代码执行时,我会一遍又一遍地得到以下异常
Source: Microsoft.VisualBasic
TargetSite: Microsoft.VisualBasic.FileSystem.Kill
Message: No files found matching 'I:\RPG\HGIAPVXD.NX'.
StackTrace:
at Microsoft.VisualBasic.FileSystem.Kill(String PathName)
(More trace that identifies the exact line of code.)
在运行此代码的不同计算机上有两个人,但只有一个人获得了异常。例外不会每次都发生,但它会定期发生。 (每小时多次。)代码不在循环中,也不是连续运行,更像每隔几分钟一次。
从表面上看,这看起来像是一种竞争条件,但考虑到这些代码的运行频率以及错误发生的频率,我认为必定会有其他事情发生。
我很感激有关如何追踪这里真实情况的任何建议。保持错误发生的解决方案会更好。
答案 0 :(得分:5)
我想要问的第一个问题是“文件真的存在吗?”如果是的话,它是否具有任何特定属性(是只读还是隐藏,还是系统---还是目录)?
请注意,Microsoft.VisualBasic.FileSystem.Kill专门查找并静默跳过标记为“系统”或“隐藏”的任何文件。对于几乎任何其他问题,你会得到一个不同的例外。
答案 1 :(得分:0)
正如James所指出的,Kill函数检查文件是否是系统或隐藏的,你最好使用System.IO.File.Delete()代替
Try
System.IO.File.Delete(sFilePath & IndexFileName & ".NX")
Catch ex As System.Exception
...
End Try
使用File.Exits并不是必需的,因为File.Delete()会自行检查。
答案 2 :(得分:0)
I:驱动器是否有可能是网络驱动器?这可能是一些网络问题......或者可能是竞争条件