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 );
      }
    }
    Requirements

    Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

    See Also