Поделиться через


HttpListener.EndGetContext(IAsyncResult) Метод

Определение

Завершает асинхронную операцию получения входящего клиентского запроса.

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

Параметры

asyncResult
IAsyncResult

Объект IAsyncResult, который был получен при запуске асинхронной операции.

Возвращаемое значение

Объект HttpListenerContext, представляющий клиентский запрос.

Исключения

Значение параметра asyncResult не получено вызовом метода BeginGetContext(AsyncCallback, Object).

asyncResult имеет значение null.

Вызов функции Win32 завершился с ошибкой. Проверьте свойство исключения ErrorCode, чтобы определить причину исключения.

Метод EndGetContext(IAsyncResult) уже был вызван для указанного объекта asyncResult.

Данный объект закрыт.

Примеры

В следующем примере кода показана реализация метода обратного вызова, который вызывает EndGetContext метод .

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

Комментарии

Метод EndGetContext вызывается , как правило, в определяемом приложением методе обратного вызова, вызываемом делегатом, для получения HttpListenerContext объекта, содержащего входящий запрос клиента и связанный с ним ответ. Этот метод завершает операцию, запущенную ранее путем вызова BeginGetContext метода . Если операция не завершена, этот метод блокируется до тех пор, пока не завершится.

Поскольку для вызова EndGetContext метода требуется HttpListener объект , этот объект обычно передается в метод обратного вызова с помощью объекта состояния, переданного BeginGetContext в метод . Этот объект состояния можно получить с помощью AsyncState свойства asyncResult объекта .

Подробные сведения об использовании асинхронной модели программирования см. в разделе Асинхронный вызов синхронных методов.

Примечания для тех, кто вызывает этот метод

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в .NET Framework.

Применяется к