NegotiateStream.EndRead(IAsyncResult) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Завершает асинхронную операцию чтения, которая была запущена с вызовом BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
public:
override int EndRead(IAsyncResult ^ asyncResult);
public override int EndRead(IAsyncResult asyncResult);
override this.EndRead : IAsyncResult -> int
Public Overrides Function EndRead (asyncResult As IAsyncResult) As Integer
Параметры
- asyncResult
- IAsyncResult
Экземпляр, IAsyncResult возвращаемый вызовом BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Возвращаемое значение
Int32 Значение, указывающее количество байтов, считываемых из базового потока.
Исключения
asyncResult равно null.
AsyncResult не был создан вызовом BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
Для завершения операции чтения не требуется.
–или–
Проверка подлинности не произошла.
Сбой операции чтения.
Примеры
В следующем примере кода демонстрируется завершение асинхронной операции чтения. Пример, демонстрирующий запуск операции, см. в разделе BeginRead.
private static void EndReadCallback(ClientState cState, int bytes)
{
NegotiateStream authStream = (NegotiateStream)cState.AuthenticatedStream;
// Read the client message.
try
{
cState.Message.Append(Encoding.UTF8.GetChars(cState.Buffer, 0, bytes));
if (bytes != 0)
{
Task<int> readTask = authStream.ReadAsync(cState.Buffer, 0, cState.Buffer.Length);
readTask
.ContinueWith(task => { EndReadCallback(cState, task.Result); })
.Wait();
return;
}
}
catch (Exception e)
{
// A real application should do something
// useful here, such as logging the failure.
Console.WriteLine("Client message exception:");
Console.WriteLine(e);
return;
}
IIdentity id = authStream.RemoteIdentity;
Console.WriteLine("{0} says {1}", id.Name, cState.Message.ToString());
}
Комментарии
Если операция не завершена, этот метод блокируется до тех пор, пока он не будет выполнен.
Чтобы выполнить эту операцию синхронно, используйте Read этот метод.
Этот метод нельзя вызвать, пока не будет успешно выполнена проверка подлинности. Чтобы пройти проверку подлинности, вызовите один из AuthenticateAsClientметодов , , AuthenticateAsClientAsyncBeginAuthenticateAsClient, AuthenticateAsServerAuthenticateAsServerAsyncBeginAuthenticateAsServer или методы.