Xceed .NET Libraries Documentation
Xceed.Ftp Assembly / Xceed.Ftp Namespace / AsyncFtpClient Class / EndGetDownloadStream Method
An System.IAsyncResult representing the status of the asynchronous operation.
Example


In This Topic
    EndGetDownloadStream Method
    In This Topic
    Ends the process of retrieving a direct access to the readonly data stream being received.
    Syntax
    'Declaration
     
    
    Public Function EndGetDownloadStream( _
       ByVal asyncResult As IAsyncResult _
    ) As Stream
    'Usage
     
    
    Dim instance As AsyncFtpClient
    Dim asyncResult As IAsyncResult
    Dim value As Stream
     
    value = instance.EndGetDownloadStream(asyncResult)
    public Stream EndGetDownloadStream( 
       IAsyncResult asyncResult
    )

    Parameters

    asyncResult
    An System.IAsyncResult representing the status of the asynchronous operation.

    Return Value

    The data System.IO.Stream to read from.
    Remarks

    The FTP client will remain in a "ReceivingFile" state until the stream is closed.

    Example
    The following example demonstrates how to use the BeginGetDownloadStream%M:Xceed.Ftp.AsyncFtpClient.EndGetDownloadStream(System.IAsyncResult)% methods to display the content of a text file.
    Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs )
      Dim ftp As New AsyncFtpClient()
      Dim result As IAsyncResult = ftp.BeginConnect( "ftp.server.com", Nothing, Nothing )
      
      While Not result.IsCompleted
        Application.DoEvents()
      WEnd
        
      ftp.EndConnect( result )
        
      result = ftp.BeginLogin( Nothing, Nothing )
      
      While Not result.IsCompleted 
        Application.DoEvents()
      WEnd
        
      ftp.EndLogin( result )
      
      result = ftp.BeginGetDownloadStream( "test.txt", 0, New AsyncCallback( AddressOf Me.end_download ), ftp )
      
      While Not result.IsCompleted 
        Application.DoEvents()
      WEnd
        
      result = ftp.BeginDisconnect( Nothing, Nothing )
      
      While Not result.IsCompleted 
        Application.DoEvents()
      WEnd
        
      ftp.EndDisconnect( result )
    End Sub
    
    Private Sub end_download( ByVal result As IAsyncResult )
      Dim client As AsyncFtpClient = result.AsyncState
    
     Try
         Dim stream As System.IO.Stream = client.EndGetDownloadStream( result )
        
         Dim buffer(32768) As Byte
         Dim bytesRead As Integer = 0
          
         ' Loop until we have nothing more to read from the source stream.
         ' We are assuming that the data contained in the file is text
         Dim data As String = string.Empty
         Do
           bytesRead = stream.Read(buffer, 0, buffer.Length)
          
           If bytesRead > 0 Then
             data += System.Text.Encoding.ASCII.GetString( buffer )
           End If
         Loop Until bytesRead = 0          
          
         System.Diagnostics.Debug.WriteLine( data )
          
         stream.Close()
       Catch exception As Exception
         System.Diagnostics.Debug.WriteLine( exception.Message )
       End Try
     End Sub
    private void button1_Click(object sender, System.EventArgs e)
    {
      AsyncFtpClient ftp = new AsyncFtpClient();
      IAsyncResult result = ftp.BeginConnect( "ftp.server.com", null, null );
      
      while( !result.IsCompleted )
        Application.DoEvents(); 
        
      ftp.EndConnect( result );
        
      result = ftp.BeginLogin( null, null ); 
      
      while( !result.IsCompleted )
        Application.DoEvents(); 
        
      ftp.EndLogin( result );
      
      result = ftp.BeginGetDownloadStream( "test.txt", 0, new AsyncCallback( this.end_download ), ftp );
      
      while( !result.IsCompleted )
        Application.DoEvents();
        
      result = ftp.BeginDisconnect( null, null );
      
      while( !result.IsCompleted )
        Application.DoEvents();
        
      ftp.EndDisconnect( result );    
    }
    
    private void end_download( IAsyncResult result )
    {
      AsyncFtpClient client = result.AsyncState as AsyncFtpClient;
      
      try
      {
        using( System.IO.Stream stream = client.EndGetDownloadStream( result ) )
        {
          byte[] buffer = new byte[ 32768 ];
          int bytesRead = 0;
          
          // Loop until we have nothing more to read from the source stream.
          // We are assuming that the data contained in the file is text
          string data = string.Empty;
          while( ( bytesRead = stream.Read( buffer, 0, buffer.Length  ) ) > 0 )
          {
            data += System.Text.Encoding.ASCII.GetString( buffer );            
          }          
          
          System.Diagnostics.Debug.WriteLine( data );
        }
      }
      catch( Exception exception )
      {
        System.Diagnostics.Debug.WriteLine( exception.Message );
      }
    }
    Example
    Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs ) Dim ftp As New AsyncFtpClient() Dim result As IAsyncResult = ftp.BeginConnect( "ftp.server.com", Nothing, Nothing ) While Not result.IsCompleted Application.DoEvents() WEnd ftp.EndConnect( result ) result = ftp.BeginLogin( Nothing, Nothing ) While Not result.IsCompleted Application.DoEvents() WEnd ftp.EndLogin( result ) result = ftp.BeginGetDownloadStream( "test.txt", 0, New AsyncCallback( AddressOf Me.end_download ), ftp ) While Not result.IsCompleted Application.DoEvents() WEnd result = ftp.BeginDisconnect( Nothing, Nothing ) While Not result.IsCompleted Application.DoEvents() WEnd ftp.EndDisconnect( result ) End Sub Private Sub end_download( ByVal result As IAsyncResult ) Dim client As AsyncFtpClient = result.AsyncState Try Dim stream As System.IO.Stream = client.EndGetDownloadStream( result ) Dim buffer(32768) As Byte Dim bytesRead As Integer = 0 ' Loop until we have nothing more to read from the source stream. ' We are assuming that the data contained in the file is text Dim data As String = string.Empty Do bytesRead = stream.Read(buffer, 0, buffer.Length) If bytesRead > 0 Then data += System.Text.Encoding.ASCII.GetString( buffer ) End If Loop Until bytesRead = 0 System.Diagnostics.Debug.WriteLine( data ) stream.Close() Catch exception As Exception System.Diagnostics.Debug.WriteLine( exception.Message ) End Try End Sub
    private void button1_Click(object sender, System.EventArgs e) { AsyncFtpClient ftp = new AsyncFtpClient(); IAsyncResult result = ftp.BeginConnect( "ftp.server.com", null, null ); while( !result.IsCompleted ) Application.DoEvents(); ftp.EndConnect( result ); result = ftp.BeginLogin( null, null ); while( !result.IsCompleted ) Application.DoEvents(); ftp.EndLogin( result ); result = ftp.BeginGetDownloadStream( "test.txt", 0, new AsyncCallback( this.end_download ), ftp ); while( !result.IsCompleted ) Application.DoEvents(); result = ftp.BeginDisconnect( null, null ); while( !result.IsCompleted ) Application.DoEvents(); ftp.EndDisconnect( result ); } private void end_download( IAsyncResult result ) { AsyncFtpClient client = result.AsyncState as AsyncFtpClient; try { using( System.IO.Stream stream = client.EndGetDownloadStream( result ) ) { byte[] buffer = new byte[ 32768 ]; int bytesRead = 0; // Loop until we have nothing more to read from the source stream. // We are assuming that the data contained in the file is text string data = string.Empty; while( ( bytesRead = stream.Read( buffer, 0, buffer.Length ) ) > 0 ) { data += System.Text.Encoding.ASCII.GetString( buffer ); } System.Diagnostics.Debug.WriteLine( data ); } } catch( Exception exception ) { System.Diagnostics.Debug.WriteLine( exception.Message ); } }
    Supported Frameworks

    .NET: net5.0, net5.0-windows, net6.0, net6.0-macos, net6.0-windows, net7.0, net7.0-macos, net7.0-windows, net8.0, net8.0-browser, net8.0-macos, net8.0-windows, net9.0, net9.0-browser, net9.0-macos, net9.0-windows, net10.0, net10.0-browser, net10.0-macos, net10.0-windows.

    .NET Standard: netstandard2.0, netstandard2.1

    .NET Framework: net20, net35, net40, net403, net45, net451, net452, net46, net461, net462, net463, net47, net471, net472, net48, net481.

    See Also