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.