SFTP Object
 
Syntax
 
SFTP.DownloadFileByNameAsync(remoteFilePath As String, localFilePath As String) As ChilkatTask
 
Description
Creates an asynchronous task to call the DownloadFileByName method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)
 
Note: Async method event callbacks happen in the background thread. Accessing and updating UI elements existing in the main thread may require special considerations.
 
Returns Nothing on failure
 
See Also

Example
Sub Main
 
' Set some timeouts, in milliseconds:
sftp.ConnectTimeoutMs = 15000
sftp.IdleTimeoutMs = 15000
 
' Connect to the SSH server. 
' The standard SSH port = 22
' The hostname may be a hostname or IP address.
Dim hostname As String
hostname = "www.my-ssh-server.com"
Dim port As Long
port = 22
success = sftp.Connect(hostname,port)
If (success <> 1) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' Authenticate with the SSH server.  Chilkat SFTP supports
' both password-based authenication as well as public-key
' authentication.  This example uses password authenication.
success = sftp.AuthenticatePw("myLogin","myPassword")
If (success <> 1) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' After authenticating, the SFTP subsystem must be initialized:
success = sftp.InitializeSftp()
If (success <> 1) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' --------------------
' Download a file
' --------------------
Dim localFilePath As String
localFilePath = "c:/temp/hamlet.xml"
Dim remoteFilePath As String
remoteFilePath = "subdir1/subdir2/hamlet.xml"
 
' Call the async version of the DownloadFileByName method to return a task object.
' The task object is loaded, but is in the Inert state -- meaning it is
' not yet scheduled to run on Chilkat's background thread pool.
Dim task As ChilkatTask
Set task = sftp.DownloadFileByNameAsync(remoteFilePath,localFilePath)
If (sftp.LastMethodSuccess = 0) Then
    Debug.Print sftp.LastErrorText
    Exit Sub
End If
 
' Before starting the task, tell it to keep an in-memory log of what would've been
' ProgressInfo callbacks.
task.KeepProgressLog = 1
 
' Schedule the task for running on the thread pool.  This changes the task's state
' from Inert to Live.
success = task.Run()
If (success <> 1) Then
    Debug.Print task.LastErrorText
 
    Exit Sub
End If
 
' The application is now free to do anything else
' while the file is being downloaded.
 
' For this example, we'll simply sleep and periodically
' check to see if the download is finished, and report the progress
' along the way.
Dim curPctDone As Long
curPctDone = 0
Dim name As String
Dim value As String
 
Do While task.Finished <> 1
 
    If (task.PercentDone <> curPctDone) Then
        curPctDone = task.PercentDone
        Debug.Print curPctDone & " percent done"
    End If
 
    ' Check the progress info log.
    ' Emit any log entries..
    Do While (task.ProgressLogSize > 0)
        ' Get the 1st entry, emit it, and then remove it..
        name = task.ProgressInfoName(0)
        value = task.ProgressInfoValue(0)
 
        ' Entries reporting the received byte count will have the name "RcvByteCount"
        ' Entries reporting the current bytes-per-second will have the name "RcvBytesPerSec"
 
        Debug.Print name & ": " & value
        task.RemoveProgressInfo 0
    Loop
 
    ' Sleep 100 ms.
    task.SleepMs 100
 
Loop
 
' Just in case there are any remaining entries...
Do While (task.ProgressLogSize > 0)
    ' Get the 1st entry, emit it, and then remove it..
    name = task.ProgressInfoName(0)
    value = task.ProgressInfoValue(0)
    Debug.Print name & ": " & value
    task.RemoveProgressInfo 0
Loop
 
' A finished task could be one that was canceled, aborted, or truly finished. 
 
' If the task was "canceled", it was canceled prior to actually starting.  This could
' happen if the task was canceled while waiting in a thread pool queue to be scheduled by Chilkat's
' background thread pool scheduler. 
 
' If the task was "aborted", it indicates that it was canceled while running in a background thread. 
' The ResultErrorText will likely indicate that the task was aborted.
 
' If the task "completed", then it ran to completion, but the actual success/failure of the method
' is determined by the result obtained via a GetResult* method.  (A "completed" task will
' have a StatusInt equal to 7.   If the task finished, but was not completed, then it must've
' been aborted or canceled:
If (task.StatusInt <> 7) Then
    Debug.Print "Task did not complete."
    Debug.Print "task status: " & task.Status
 
    Exit Sub
End If
 
' The DownloadFileByName method returns a boolean.  Therefore, after the task is finished,
' we can get the boolean result by calling GetResultBool.  This is the return value had
' we called DownloadFileByName synchronously.
success = task.GetResultBool()
If (success <> 1) Then
    ' The task's ResultErrorText contains what would have been in the LastErrorText property had
    ' the DownloadFileByName method been called synchronously.
    Debug.Print task.ResultErrorText
Else
    Debug.Print "File downloaded asynchronously."
End If
 
End Sub