运行如下程序时,服务器连接都没有报错,但时同一个文件有时能正常,有时报加载失败,有时当报加载失败时打开文件夹却又是已经下载了文件。怎么回事呢?
If ftpd.Connect = True Then
If ftpd.Download (ylj, mlj) = True Then
Dim Proc As New Process
Proc.File = mlj
Proc.Start()
Else
MessageBox.Show ("文件加载失败")
End If
Else
MessageBox.Show ("服务器无法连接")
End If
文件有多大?会不会文件之前已经下载,并且处于打开状态?下载后是保存在哪的,本机硬盘,还是共享目录?
ylj = r("文件路径")
mlj = ProjectPath & "RemoteFiles\" & r("文件名称")
文件保存在本机硬盘项目文件夹里,文件大小几十K的,几M的,都有,
文件之前已经下载,并且处于打开状态,这个我有注意到的,我打开了的我关掉才试的
多测试,跟踪调试看看,找找有没有什么规律
If ftpd.Connect = True Then
MessageBox.Show (FileSys.FileExists(mlj))
If ftpd.Download (ylj, mlj) = True Then
Dim Proc As New Process
Proc.File = mlj
Proc.Start()
Else
MessageBox.Show ("文件加载失败," & FileSys.FileExists(mlj))
End If
Else
ylj = r("文件路径").replace(vblf, "").replace(vbcr, "").replace(" ", "")
mlj = ProjectPath & "RemoteFiles\" & r("文件名称").replace(vblf, "").replace(vbcr, "").replace(" ", "")
If filesys.FileExists (mlj) Then
Dim Proc As New Process
Proc.File = mlj
Proc.Start()
Else
If ftpd.Download (ylj, mlj) = True Then
Dim Proc As New Process
Proc.File = mlj
Proc.Start()
Else
MessageBox.Show ("文件加载失败")
End If
End if
我把代码改成这样,现在第一次运行实际是下载了文件的,但是报加载失败,第二次运行就可以直接打开,怎么样才可以第一次运行下载同时打开?不用再运行二次
是不是要延迟一下,再调用程序打开?但是我试的文件才几十K,也不大,要怎么搞?
Else
Threading.Thread.Sleep(1000) '等待1秒
Application.DoEvents
If filesys.FileExists (mlj) Then
Dim Proc As New Process
Proc.File = mlj
Proc.Start()
Else
MessageBox.Show ("文件加载失败")
End If
End If
End If
现在多加一层IF, 目前可以一次打开,再多试试,有问题再问,谢谢了