NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает асинхронную запись в поток.
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
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 size, AsyncCallback? callback, 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 size, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- buffer
- Byte[]
Массив типа Byte, содержащий данные для записи в объект NetworkStream.
- offset
- Int32
Местоположение в буфере buffer
, начиная с которого отправляются данные.
- sizecount
- Int32
Число байтов для записи в объект NetworkStream.
- callback
- AsyncCallback
Делегат AsyncCallback, который выполняется после выполнения метода BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).
- state
- Object
Объект, содержащий любые дополнительные данные, определенные пользователем.
Возвращаемое значение
Объект IAsyncResult, который представляет асинхронный вызов.
Исключения
Параметр buffer
имеет значение null
.
Значение параметра offset
меньше 0.
-или-
Значение параметра offset
больше длины значения, указанного в параметре buffer
.
-или-
Значение параметра size
меньше 0.
-или-
Значение параметра size
больше разности значений длины в параметре buffer
и значения параметра offset
.
Основной объект Socket закрыт.
-или-
Произошел сбой в процессе записи в сеть.
-или-
Произошла ошибка при обращении к сокету.
Объект NetworkStream закрыт.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin/End) для новой разработки. Вместо этого используйте эквиваленты на основе задач.
Вы можете передать обратный вызов, реализующий AsyncCallback для BeginWrite , чтобы получать уведомления о завершении операции. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов будет выполняться во время вызова BeginWrite. В этом случае свойству CompletedSynchronously возвращаемого IAsyncResult объекта будет присвоено значение true
, чтобы указать, что метод завершился синхронно.
AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный методу BeginWrite .
Операция BeginWrite должна быть завершена путем вызова EndWrite метода . Как правило, метод вызывается предоставленным AsyncCallback делегатом. EndWrite блокирует вызывающий поток до завершения операции.
Примечание
Если вы получаете IOException, проверка InnerException свойство , чтобы определить, было ли оно вызвано SocketException. Если это так, используйте ErrorCode свойство , чтобы получить конкретный код ошибки.
Операции чтения и записи можно выполнять одновременно с экземпляром NetworkStream класса без необходимости синхронизации. Пока существует один уникальный поток для операций записи и один уникальный поток для операций чтения, между потоками чтения и записи не будет никаких перекрестных помех, а синхронизация не требуется.