Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Метод
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает операцию асинхронной записи. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32).)
public:
virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable 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 . Эти методы по-прежнему доступны в платформа .NET Framework 4.5 для поддержки устаревшего кода. Однако новые асинхронные методы, такие как ReadAsync, WriteAsync, CopyToAsyncи FlushAsync, упрощают реализацию асинхронных операций ввода-вывода.
Реализация BeginWrite
по умолчанию в потоке Write вызывает метод синхронно, что означает, что Write
некоторые потоки могут блокироваться. Однако экземпляры классов, таких как FileStream
и , NetworkStream
полностью поддерживают асинхронные операции, если экземпляры были открыты асинхронно. Поэтому вызовы не BeginWrite
будут блокироваться в этих потоках. Вы можете переопределить BeginWrite
(например, с помощью асинхронных делегатов), чтобы обеспечить асинхронное поведение.
Передайте объект , IAsyncResult
возвращенный текущим методом , в , EndWrite чтобы обеспечить надлежащее завершение записи и освобождение ресурсов.
EndWrite должен вызываться один раз для каждого вызова BeginWrite. Это можно сделать с помощью того же кода, который вызвал BeginWrite
, или в обратном вызове, переданном в BeginWrite
. Если во время асинхронной записи возникает ошибка, исключение не будет создано до тех пор, пока EndWrite
не будет вызван с IAsyncResult
возвращаемым этим методом.
Если поток доступен для записи, запись в конце потока расширяет поток.
Текущая позиция в потоке обновляется при выполнении асинхронного чтения или записи, а не после завершения операции ввода-вывода. Несколько одновременных асинхронных запросов делают порядок завершения запроса неопределенным.
Используйте свойство , CanWrite чтобы определить, поддерживает ли текущий экземпляр запись.
Если поток закрыт или вы передаете недопустимый аргумент, исключения создаются немедленно из BeginWrite
. Ошибки, возникающие во время асинхронного запроса на запись, такие как сбой диска во время запроса ввода-вывода, происходят в потоке пула потоков и вызывают исключения при вызове EndWrite
.
Продукт | Версии |
---|---|
.NET | Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: