На самом деле я кодировал следующий макрос на основе метода FileCopy.
'MyObject copy function:
Public Function OutputFile(ByVal SrcPath As String, ByVal TrgPath As String) As Boolean
If pDoesFileExist(SrcPath) Then '<= Internal private function to check if file exists
FileCopy SrcPath, TrgPath
OutputFile = True
Else
OutputFile = False
End If
End Function
Вызывается из:
'Called subroutine from main program:
Sub OutputFiles(ByRef MyCollection As Collection, SourcePath As String, TargetPath As String)
Dim Obj As MyObject
With MyForm
.Show "Modeless"
For Each Obj In MyCollection
If Obj.OutputFile(SourcePath, TargetPath) Then
.TextBoxResult.Text = .TextBoxResult.Text & "File copied." & vbNewLine
Else
.TextBoxResult.Text = .TextBoxResult.Text & "File not copied!" & vbNewLine
End if
Next Obj
End With
End Sub
Макрос отлично работает, когда я запускаю его из / в мой локальный компьютерные папки, независимо от размера файла (от нескольких КБ до 20 МБ или более).
Но когда я запускаю его, используя исходный путь рабочего домена (который, очевидно, медленнее, чем мой компьютер), строка инструкции FileCopy «зависает» на больших файлах. Программа все еще работает в фоновом режиме, и файлы успешно копируются, однако MyForm будет go зависать [Нет ответа] до конца выполнения.
Пошаговая отладка работает "отлично", Мне просто нужно подождать, пока инструкция FileCopy вернется (примерно 10 секунд), а затем продолжать двигаться вперед.
Я хотел бы знать, есть ли возможный способ заставить это «ждать, пока FileCopy вернется», или предоставить иммунитет к остальной части моего кода против этих мини-зависаний?