FileWebRequest.BeginGetResponse(AsyncCallback, Object) Método

Definição

Inicia uma solicitação assíncrona para um recurso de sistema de arquivos.

public override IAsyncResult BeginGetResponse (AsyncCallback? callback, object? state);
public override IAsyncResult BeginGetResponse (AsyncCallback callback, object state);

Parâmetros

callback
AsyncCallback

O delegado AsyncCallback.

state
Object

Um objeto que contém informações de estado para essa solicitação.

Retornos

Um IAsyncResult que faz referência à solicitação assíncrona.

Exceções

O fluxo já está sendo usado por uma chamada anterior para BeginGetResponse(AsyncCallback, Object).

O FileWebRequest foi anulado.

Exemplos

O exemplo de código a seguir usa o BeginGetResponse método para acessar de forma assíncrona um recurso do sistema de arquivos.


public class RequestDeclare
{
public FileWebRequest myFileWebRequest;	

    public RequestDeclare()
    {
        myFileWebRequest = null;
    }
}

class FileWebRequest_resbeginend
{

    public static ManualResetEvent allDone = new ManualResetEvent(false);

    static void Main(string[] args)
    {
        
        if (args.Length < 1)
        {
           Console.WriteLine("\nPlease enter the file name as command line parameter:");
           Console.WriteLine("Usage:FileWebRequest_resbeginend <systemname>/<sharedfoldername>/<filename>\nExample:FileWebRequest_resbeginend shafeeque/shaf/hello.txt");
        }
        else
        {
          try
        {

              // Place a 'Webrequest'.
              WebRequest myWebRequest= WebRequest.Create("file://"+args[0]);
              // Create an instance of the 'RequestDeclare' and associating the 'myWebRequest' to it.		
              RequestDeclare myRequestDeclare = new RequestDeclare();
              myRequestDeclare.myFileWebRequest = (FileWebRequest)myWebRequest;

              // Begin the Asynchronous request for getting file content using 'BeginGetResponse()' method.	
              IAsyncResult asyncResult =(IAsyncResult) myRequestDeclare.myFileWebRequest.BeginGetResponse(new AsyncCallback(RespCallback),myRequestDeclare);			
              allDone.WaitOne();
           }
        catch(ArgumentNullException e)
           {
              Console.WriteLine("ArgumentNullException is :"+e.Message);
           }
           catch(UriFormatException e)
          {
              Console.WriteLine("UriFormatException is :"+e.Message);
          }
       }
    }

  private static void RespCallback(IAsyncResult ar)
  {	

           // State of request is asynchronous.
            RequestDeclare requestDeclare=(RequestDeclare) ar.AsyncState;
                
            FileWebRequest  myFileWebRequest=requestDeclare.myFileWebRequest;
        
           // End the Asynchronus request by calling the 'EndGetResponse()' method.
            
            FileWebResponse myFileWebResponse = (FileWebResponse) myFileWebRequest.EndGetResponse(ar);

            // Reade the response into Stream.
            StreamReader streamReader= new StreamReader(myFileWebResponse.GetResponseStream());

            Char[] readBuffer = new Char[256];
                
            int count = streamReader.Read( readBuffer, 0, 256 );

            Console.WriteLine("The contents of the file are :\n");
    
            while (count > 0)
            {
                String str = new String(readBuffer, 0, count);
                Console.WriteLine(str);
                count = streamReader.Read(readBuffer, 0, 256);
            }
            
            streamReader.Close();
            // Release the response object resources.
            myFileWebResponse.Close();
            allDone.Set();
            Console.WriteLine("File reading is over.");	
    }
}

Comentários

O método de retorno de chamada assíncrono que implementa o AsyncCallback delegado usa o EndGetResponse método para retornar o real FileWebResponse.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Confira também