This is an old revision of the document!

Session.FileTransferProgress Event

This feature is available only in the latest beta release.

Occurs during file tranfer to report transfer progress. Occurs as part of either Session.GetFiles, Session.PutFiles or Session.SynchronizeDirectories.

Advertisement

Syntax

C#
public delegate void FileTransferProgressEventHandler(object sender, FileTransferProgressEventArgs e);
public event FileTransferredEventHandler FileTransferred;
VB.NET
Public Delegate Sub FileTransferProgressEventHandler(
    ByVal sender As Object, ByVal e As FileTransferProgressEventArgs)
Public Custom Event FileTransferred As FileTransferredEventHandler

Remarks

See FileTransferProgressEventArgs.

The event is raised, when starting transfer of every file, and then at most once a second for duration of the transfer.

See also Session.FileTransferred.

Examples

C# Example

using System;
using WinSCP;
 
class Example
{
    public static int Main()
    {
        try
        {
            // Setup session options
            SessionOptions sessionOptions = new SessionOptions {
                Protocol = Protocol.Sftp,
                HostName = "example.com",
                UserName = "user",
                Password = "mypassword",
                SshHostKeyFingerprint = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
            };
 
            using (Session session = new Session())
            {
                // Will continuously report progress of transfer
                session.FileTransferProgress += SessionFileTransferProgress;
 
                // Connect
                session.Open(sessionOptions);
 
                try
                {
                    // Download files and throw on any error
                    session.GetFiles("/home/martin/public_html/", "d:\\backup\\").Check();
                }
                finally
                {
                    // Terminate line after the last file (if any)
                    if (_lastFileName != null)
                    {
                        Console.WriteLine();
                    }
                }
            }
 
            return 0;
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: {0}", e);
            return 1;
        }
    }
 
    private static void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
    {
        // New line for every new file
        if ((_lastFileName != null) && (_lastFileName != e.FileName))
        {
            Console.WriteLine();
        }
 
        // Print transfer progress
        Console.Write("\r{0} ({1:P0})", e.FileName, e.FileProgress);
 
        // Remember a name of the last file reported
        _lastFileName = e.FileName;
    }
 
    private static string _lastFileName;
}

Advertisement

VB.NET Example

Imports System
Imports WinSCP
 
Friend Class Example
 
    Public Shared Function Main() As Integer
 
        Try 
            ' Setup session options
            Dim sessionOptions As New SessionOptions
            With sessionOptions
                .Protocol = Protocol.Sftp
                .HostName = "example.com"
                .UserName = "user"
                .Password = "mypassword"
                .SshHostKeyFingerprint = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
            End With
 
            Using session As Session = New Session
                ' Will continuously report progress of transfer
                AddHandler session.FileTransferProgress, AddressOf SessionFileTransferProgress
 
                ' Connect
                session.Open(sessionOptions)
 
                Try 
                    ' Download files and throw on any error
                    session.GetFiles( _
                        "/home/martin/public_html/", "d:\backup\").Check
                Finally
                    ' Terminate line after the last file (if any)
                    If Example._lastFileName IsNot Nothing Then
                        Console.WriteLine
                    End If
                End Try
            End Using
 
            Return 0
        Catch e As Exception
            Console.WriteLine("Error: {0}", e)
            Return 1
        End Try
 
    End Function
 
    Private Shared Sub SessionFileTransferProgress(
            ByVal sender As Object, ByVal e As FileTransferProgressEventArgs)
        ' New line for every new file
        If (_lastFileName IsNot Nothing) AndAlso (_lastFileName <> e.FileName)) Then
            Console.WriteLine
        End If
 
        ' Print transfer progress
        Console.Write("\r{0} ({1:P0})", e.FileName, e.FileProgress)
 
        ' Remember a name of the last file reported
        _lastFileName = e.FileName
    End Sub
 
    Private Shared _lastFileName As String
End Class

Advertisement

Last modified: by martin