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.