2014-10-26 323 views
0

我在这个小脚本的'DeleteFile'行中有时会出现'找不到文件'的错误: (我想当几个客户端同时打开脚本时)在现有文件上找不到'文件未找到'错误

if objFSO.FileExists(fileName) then 
    Set f = objFSO.GetFile(fileName) 
    if DateDiff("d", f.DateLastModified, date()) > 3 then 
     Application.Lock 
     objFSO.DeleteFile(fileName) 
     Application.Unlock 
    end if 
    Set f = nothing 
end if 

但是这应该受到第一行'FileExists'的保护? 有什么想法?谢谢。

+0

什么是'Application.Lock'和'Application.Unlock'语句?你没有在代码中对应用程序变量做任何事情,所以他们没有意义? – Lankymart 2014-10-27 05:10:50

回答

2

您正遇到竞赛状况。文件属性缓存在GetFile的第二行。如果该文件存在,该代码将继续运行。您需要在该点之前锁定,或刷新属性缓存并在Application.Lock后仔细检查存在。

+0

好像你可以使用锁来包装你的if语句,而不是将它们嵌入到if语句中。 – Dee 2014-10-27 03:37:43

+0

@Dee“锁”没有意义,因为没有应用程序变量被操纵。让他们在那里什么都不做,并且不会**停止OP正在经历的行为。 – Lankymart 2014-10-27 05:14:44

+0

谢谢,我认为这是一个这样的问题,但不知道... – Chrigou 2014-10-27 09:44:27