Xceed .NET Libraries Documentation
EndGetDownloadStream Method
Example 


Xceed.Ftp Assembly > Xceed.Ftp Namespace > AsyncFtpClient Class : EndGetDownloadStream Method
An System.IAsyncResult representing the status of the asynchronous operation.
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

Reference

AsyncFtpClient Class
AsyncFtpClient Members