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