HttpListener.EndGetContext(IAsyncResult) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Completa un'operazione asincrona per recuperare una richiesta del client in ingresso.
public:
System::Net::HttpListenerContext ^ EndGetContext(IAsyncResult ^ asyncResult);
public System.Net.HttpListenerContext EndGetContext (IAsyncResult asyncResult);
member this.EndGetContext : IAsyncResult -> System.Net.HttpListenerContext
Public Function EndGetContext (asyncResult As IAsyncResult) As HttpListenerContext
Parametri
- asyncResult
- IAsyncResult
Oggetto IAsyncResult ottenuto all'avvio dell'operazione asincrona.
Restituisce
Oggetto HttpListenerContext che rappresenta la richiesta del client.
Eccezioni
asyncResult
non è stato ottenuto chiamando il metodo BeginGetContext(AsyncCallback, Object).
asyncResult
è null
.
Errore di una chiamata di funzione Win32. Verificare la proprietà ErrorCode dell'eccezione per determinare la causa dell'eccezione.
Il metodo EndGetContext(IAsyncResult) era già stato chiamato per l'oggetto asyncResult
specificato.
Questo oggetto è chiuso.
Esempio
Nell'esempio di codice seguente viene illustrata l'implementazione di un metodo di callback che chiama il EndGetContext metodo .
public static void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener) result.AsyncState;
// Call EndGetContext to complete the asynchronous operation.
HttpListenerContext context = listener.EndGetContext(result);
HttpListenerRequest request = context.Request;
// Obtain a response object.
HttpListenerResponse response = context.Response;
// Construct a response.
string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
// Get a response stream and write the response to it.
response.ContentLength64 = buffer.Length;
System.IO.Stream output = response.OutputStream;
output.Write(buffer,0,buffer.Length);
// You must close the output stream.
output.Close();
}
Public Shared Sub ListenerCallback(ByVal result As IAsyncResult)
Dim listener As HttpListener = CType(result.AsyncState, HttpListener)
' Call EndGetContext to complete the asynchronous operation.
Dim context As HttpListenerContext = listener.EndGetContext(result)
Dim request As HttpListenerRequest = context.Request
' Obtain a response object.
Dim response As HttpListenerResponse = context.Response
' Construct a response.
Dim responseString As String = "<HTML><BODY> Hello world!</BODY></HTML>"
Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(responseString)
' Get a response stream and write the response to it.
response.ContentLength64 = buffer.Length
Dim output As System.IO.Stream = response.OutputStream
output.Write(buffer, 0, buffer.Length)
' You must close the output stream.
output.Close()
End Sub
Commenti
Il EndGetContext metodo viene chiamato, in genere all'interno di un metodo di callback definito dall'applicazione richiamato da un delegato, per ottenere l'oggetto che contiene una richiesta client in ingresso e la HttpListenerContext relativa risposta associata. Questo metodo completa un'operazione avviata in precedenza chiamando il BeginGetContext metodo . Se l'operazione non è stata completata, questo metodo blocca fino a quando non viene eseguito.
Poiché la chiamata al metodo richiede l'oggetto EndGetContext , questo oggetto viene in genere passato a un metodo di callback usando l'oggetto HttpListener state passato al BeginGetContext metodo . È possibile ottenere questo oggetto stato usando la AsyncState proprietà dell'oggetto asyncResult
.
Per informazioni dettagliate sull'uso del modello di programmazione asincrona, vedere Chiamata di metodi sincroni in modo asincrono.
Note per i chiamanti
Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.