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


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

Определение

Начинает операцию асинхронной записи. (Вместо него рекомендуется использовать метод WriteAsync(Byte[], Int32, Int32).)

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

Параметры

arraybuffer
Byte[]

Буфер, из которого записываются данные.

offset
Int32

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

count
Int32

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

asyncCallback
AsyncCallback

Дополнительный асинхронный обратный вызов по завершении операции записи.

asyncState
Object

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

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

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

Исключения

Метод пытался в асинхронном режиме выполнить запись за пределами потока, или произошла ошибка диска.

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

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

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

Операция записи не может быть выполнена, поскольку поток закрыт.

Комментарии

Начиная с платформа .NET Framework 4.5 асинхронные операции записи можно выполнять с помощью WriteAsync метода . Метод BeginWrite по-прежнему доступен в текущих версиях для поддержки устаревшего кода, однако вы можете проще реализовать асинхронные операции ввода-вывода с помощью новых асинхронных методов. Дополнительные сведения см. в разделе Асинхронный файловый ввод-вывод.

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

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

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

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

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

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