首先是底线...
如果您在包含 IO.File.Exist(FileTest) 的 Novell 客户端 Win7 上使用循环寻找 FileTest 消失意味着是时候继续前进,从另一个客户端删除 FileTest,然后您尝试要使用 FileTest 代表的名称,您将收到网络错误。我认为它与Novell Client Win7有关的原因是如果共享是Windows共享,我看不出问题。此外,当我们的客户是 XP SP3(不确定 Novell 版本)时,我们没有看到这一点。如评论中所述,我在 SAMBA 共享上尝试过此操作,但没有发现问题。
接下来是细节....
重现它很简单。
Module Module1
Sub Main()
Dim FileTest As String = "\\corp01\vol1\bbs\test.flg" 'corp01 is a Novell share'
IO.File.WriteAllText(FileTest, "")
Do While IO.File.Exists(FileTest)
System.Threading.Thread.Sleep(100)
Loop
End Sub
End Module
然后从另一个客户端删除 test.flg 并且程序按预期结束。尝试再次运行它,当它尝试在 WriteAllText 中创建它时,您将收到网络错误。谁或如何创建文件似乎并不重要。我试图删除 WriteAllText 并从另一个客户端创建它,然后启动程序,从另一个客户端删除它,但在尝试引用名称时仍然出现网络错误。
我猜 ....
我认为该名称以某种方式被缓存。修复它的唯一方法是从 Windows 注销。另一个原因,如果 WriteFileText 抛出错误并且我尝试了另一种创建它的方式,仍然有错误。例如,在资源管理器中,我在共享上创建了一个文本文件,工作正常。然后尝试将创建的文件重命名为我的标志名称,网络错误。除了我用作标志文件的名称外,我可以将其重命名为任何其他文件名。