Non ho capito granché, ma per quanto riguarda la casualità dei file scaricati lo imputo ai tempi di risposta (che ovviamente cambiano di volta in volta) dei comandi ftp. Presumo che siano processi asincroni, cioè l'esecuzione del successivo non attende il termine del precedente. Forse questo può determinare la non corretta esecuzione di tutti i trasferimenti.
Se ho detto una cavolata, amici come prima , altrimenti occorrerebbe inventare qualche cosa per capire la reale conclusione del trasferimento e non fidarsi dello 'sleep' .
In VB6 basta fare al posto dello sleep:
Dim TimeInizio As Double
TimeInizio = CDbl(Time)
Do Until EsisteFile(FileDaScaricare)
DoEvents
'aspetto il timeout indicato
If CDbl(Time) - TimeInizio > LtimeOut Then Exit Do
Loop
e la routines EsisteFile:
Public Function EsisteFile(Lfile As String, Optional Ltipo As Integer = vbNormal) As Boolean
Dim Action As Integer, Lpath As String
EsisteFile = False
If Trim$(Lfile) = "" Then Exit Function
On Local Error GoTo EsisteERR
EsisteFile = (Dir(Lfile, Ltipo) <> "")
'sembra una ripetizione, ma risolve comportamenti diversi su sistemi diversi
If Not EsisteFile And Ltipo = vbNormal Then EsisteFile = (Dir(Lfile) <> "")
On Local Error GoTo 0
Exit Function
EsisteERR:
Action = FileErrors(Err, Lfile)
On Local Error GoTo 0
Select Case Action
Case 0
Resume
Case Else
Exit Function
End Select
End Function
dove nella FileErrors si mettono le segnalazioni volute
Saluti