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.