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вызовите один из методов , BeginAuthenticateAsClientAuthenticateAsClientAsync, AuthenticateAsServer, , AuthenticateAsServerAsyncили BeginAuthenticateAsServer .