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


CryptoStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Метод

Определение

Начинает асинхронную операцию записи. (Рекомендуется использовать WriteAsync вместо этого.)

public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Буфер для записи данных из.

offset
Int32

Смещение buffer байтов, с которого начинается запись.

count
Int32

Максимальное число байтов для записи.

callback
AsyncCallback

Необязательный асинхронный обратный вызов, который вызывается при завершении записи.

state
Object

Предоставленный пользователем объект, который отличает этот конкретный асинхронный запрос на запись от других запросов.

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

Объект, IAsyncResult представляющий асинхронную запись, которая по-прежнему может быть ожидающей.

Исключения

Предпринята попытка асинхронной записи в конце потока или произошла ошибка диска.

Один или несколько аргументов являются недопустимыми.

Методы были вызваны после закрытия потока.

Текущая Stream реализация не поддерживает операцию записи.

Комментарии

В .NET Framework 4 и более ранних версиях необходимо использовать такие методы, как BeginWrite и EndWrite, для реализации асинхронных операций ввода-вывода. Эти методы по-прежнему доступны в текущих версиях для поддержки устаревшего кода; однако новые асинхронные методы, такие как ReadAsync, WriteAsyncCopyToAsyncиFlushAsync, помогают реализовать асинхронные операции ввода-вывода.

Передайте возвращаемый текущим методом, IAsyncResult чтобы EndWrite убедиться, что запись завершается и освобождает ресурсы соответствующим образом. EndWrite необходимо вызывать один раз для каждого вызова BeginWrite. Это можно сделать с помощью того же кода, который вызывается BeginWrite или в обратном BeginWriteвызове. Если во время асинхронной записи возникает ошибка, исключение не будет возникать до EndWrite вызова с IAsyncResult возвращаемым этим методом.

Если поток доступен для записи, запись в конце потока расширяет поток.

Текущая позиция в потоке обновляется при выполнении асинхронного чтения или записи, а не после завершения операции ввода-вывода. Несколько одновременных асинхронных запросов отображают неопределенный порядок завершения запроса.

CanWrite Используйте свойство, чтобы определить, поддерживает ли текущий экземпляр запись.

Если поток закрыт или передается недопустимый аргумент, исключения возникают немедленно BeginWrite. Ошибки, возникающие во время асинхронного запроса на запись, такие как сбой диска во время запроса ввода-вывода, возникают в потоке пула потоков и вызывают исключения при вызове EndWrite.

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