Socket.BeginSend Метод

Определение

Выполняет асинхронную передачу данных на подключенный объект Socket.

Перегрузки

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffers
IList<ArraySegment<Byte>>

Массив типа Byte, который содержит передаваемые данные.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

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

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронную передачу.

Исключения

buffers имеет значение null.

Параметр buffers пуст.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка. См. ниже примeчания к данному разделу.

Socket был закрыт.

Комментарии

Метод BeginSend запускает асинхронную операцию отправки удаленному узлу, установленному в методе Connect, BeginConnectAcceptили BeginAccept методе. BeginSendвызывает исключение, если вы не вызываете первый вызовAccept, BeginAcceptConnectили BeginConnect. BeginSend Вызов метода дает возможность отправлять данные в отдельном потоке выполнения.

Можно создать метод обратного вызова, который реализует AsyncCallback делегат и передает его имя методу BeginSend . Для этого, по крайней мере, параметр state должен содержать подключенный или используемый по умолчанию параметр Socket для обмена данными. Если обратному вызову требуется дополнительная информация, можно создать небольшой класс или структуру для хранения Socket и других необходимых сведений. Передайте экземпляр этого класса методу BeginSend через state параметр.

Метод обратного EndSend вызова должен вызывать метод. При вызове BeginSendприложения система будет использовать отдельный поток для выполнения указанного метода обратного вызова и будет блокироваться EndSend до тех пор, пока Socket число запрошенных байтов не вызовет исключение. Если вы хотите, чтобы исходный поток блокировать после вызова BeginSend метода, используйте WaitHandle.WaitOne этот метод. Вызовите метод Set для T:System.Threading.ManualResetEvent в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться. Дополнительные сведения о написании методов обратного вызова см. в разделе маршалинг делегата в качестве метода обратного вызова.

Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что вы сначала вызываете Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла по умолчанию с Connect. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, датаграмма не будет отправлена и BeginSend вызовет SocketExceptionисключение .

Если в качестве socketflags параметра указать DontRoute флаг, отправляемые данные не будут перенаправлены.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

Примечание

state — это экземпляр определяемого пользователем класса.

Примечание

Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство в транспортной системе для хранения передаваемых данных недоступно, отправка будет блокироваться, если сокет не был помещен в неблокировочный режим.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и вызывающий контекст) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, конкретный Socket экземпляр и конкретный обратный вызов) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

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

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Важно!

Этот API несовместим с CLS.

Выполняет асинхронную передачу данных на подключенный объект Socket.

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
[System.CLSCompliant(false)]
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
[<System.CLSCompliant(false)>]
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffers
IList<ArraySegment<Byte>>

Массив типа Byte, который содержит передаваемые данные.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

errorCode
SocketError

Объект SocketError, содержащий ошибку сокета.

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

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

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронную передачу.

Атрибуты

Исключения

buffers имеет значение null.

Параметр buffers пуст.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка. См. ниже примeчания к данному разделу.

Socket был закрыт.

Комментарии

Метод BeginSend запускает асинхронную операцию отправки удаленному узлу, установленному в методе Connect, BeginConnectAcceptили BeginAccept методе. BeginSendвызывает исключение, если вы не вызываете первый вызовAccept, BeginAcceptConnectили BeginConnect. BeginSend Вызов метода дает возможность отправлять данные в отдельном потоке выполнения.

Можно создать метод обратного вызова, который реализует AsyncCallback делегат и передает его имя методу BeginSend . Для этого, по крайней мере, параметр state должен содержать подключенный или используемый по умолчанию параметр Socket для обмена данными. Если обратному вызову требуется дополнительная информация, можно создать небольшой класс или структуру для хранения Socket и других необходимых сведений. Передайте экземпляр этого класса методу BeginSend через state параметр.

Метод обратного EndSend вызова должен вызывать метод. При вызове BeginSendприложения система будет использовать отдельный поток для выполнения указанного метода обратного вызова и будет блокироваться EndSend до тех пор, пока Socket число запрошенных байтов не вызовет исключение. Если вы хотите, чтобы исходный поток блокировать после вызова BeginSend метода, используйте WaitHandle.WaitOne этот метод. Вызовите метод ManualResetEvent Set в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться. Дополнительные сведения о написании методов обратного вызова см. в разделе маршалинг делегата в качестве метода обратного вызова.

Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что вы сначала вызываете Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла по умолчанию с Connect. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, датаграмма не будет отправлена и BeginSend вызовет SocketExceptionисключение .

Если в качестве socketflags параметра указать DontRoute флаг, отправляемые данные не будут перенаправлены.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

Примечание

state — это экземпляр определяемого пользователем класса.

Примечание

Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство в транспортной системе для хранения передаваемых данных недоступно, отправка будет блокироваться, если сокет не был помещен в неблокировочный режим.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и вызывающий контекст) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, конкретный Socket экземпляр и конкретный обратный вызов) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

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

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Массив типа Byte, который содержит передаваемые данные.

offset
Int32

Отсчитываемая с нуля позиция в параметре buffer, с которой начинается отправка данных.

size
Int32

Количество байтов для отправки.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

errorCode
SocketError

Объект SocketError, содержащий ошибку сокета.

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

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

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронную передачу.

Исключения

buffer имеет значение null.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка. См. ниже примeчания к данному разделу.

Значение параметраoffset меньше 0.

-или-

Значение параметра offset меньше значения длины, указанного в параметре buffer.

-или-

Значение параметраsize меньше 0.

-или-

Значениеsize превышает значение, полученное, если отнять от длины buffer значение параметра offset .

Socket был закрыт.

Комментарии

Метод BeginSend запускает асинхронную операцию отправки удаленному узлу, установленному в методе Connect, BeginConnectAcceptили BeginAccept методе. BeginSendвызывает исключение, если вы не вызываете первый вызовAccept, BeginAcceptConnectили BeginConnect. BeginSend Вызов метода дает возможность отправлять данные в отдельном потоке выполнения.

Можно создать метод обратного вызова, который реализует AsyncCallback делегат и передает его имя методу BeginSend . Для этого, по крайней мере, параметр state должен содержать подключенный или используемый по умолчанию параметр Socket для обмена данными. Если обратному вызову требуется дополнительная информация, можно создать небольшой класс или структуру для хранения Socket и других необходимых сведений. Передайте экземпляр этого класса методу BeginSend через state параметр.

Метод обратного EndSend вызова должен вызывать метод. При вызове BeginSendприложения система будет использовать отдельный поток для выполнения указанного метода обратного вызова и будет блокироваться EndSend до тех пор, пока Socket число запрошенных байтов не вызовет исключение. Если вы хотите, чтобы исходный поток блокировать после вызова BeginSend метода, используйте WaitHandle.WaitOne этот метод. Вызовите метод Set для T:System.Threading.ManualResetEvent в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться. Дополнительные сведения о написании методов обратного вызова см. в разделе маршалинг делегата в качестве метода обратного вызова.

Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что вы сначала вызываете Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла по умолчанию с Connect. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, датаграмма не будет отправлена и BeginSend вызовет SocketExceptionисключение .

Если в качестве socketflags параметра указать DontRoute флаг, отправляемые данные не будут перенаправлены.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

Примечание

state — это экземпляр определяемого пользователем класса.

Примечание

Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство в транспортной системе для хранения передаваемых данных недоступно, отправка будет блокироваться, если сокет не был помещен в неблокировочный режим.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и вызывающий контекст) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, конкретный Socket экземпляр и конкретный обратный вызов) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

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

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Выполняет асинхронную передачу данных на подключенный объект Socket.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socket_flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socket_flags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socket_flags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Массив типа Byte, который содержит передаваемые данные.

offset
Int32

Отсчитываемая с нуля позиция в параметре buffer, с которой начинается отправка данных.

size
Int32

Количество байтов для отправки.

socketFlagssocket_flags
SocketFlags

Поразрядное сочетание значений SocketFlags.

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

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

IAsyncResult

Объект IAsyncResult, который ссылается на асинхронную передачу.

Исключения

buffer имеет значение null.

только платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка. См. ниже примeчания к данному разделу.

Значение параметраoffset меньше 0.

-или-

Значение параметра offset меньше значения длины, указанного в параметре buffer.

-или-

Значение параметраsize меньше 0.

-или-

Значениеsize превышает значение, полученное, если отнять от длины buffer значение параметра offset .

Socket был закрыт.

Примеры

В следующем примере кода начинается асинхронная отправка данных на удаленный узел.

allDone->Set();
Socket^ s = safe_cast<Socket^>(ar->AsyncState);
s->EndConnect( ar );
StateObject^ so2 = gcnew StateObject;
so2->workSocket = s;
array<Byte>^ buff = Encoding::ASCII->GetBytes( "This is a test" );
s->BeginSend( buff, 0, buff->Length, SocketFlags::None,
   gcnew AsyncCallback( &Async_Send_Receive::Send_Callback ), so2 );
allDone.Set();
Socket s = (Socket) ar.AsyncState;
s.EndConnect(ar);
StateObject so2 = new StateObject();
so2.workSocket = s;
byte[] buff = Encoding.ASCII.GetBytes("This is a test");
s.BeginSend(buff, 0, buff.Length,0,
                      new AsyncCallback(Async_Send_Receive.Send_Callback), so2);
Public Shared Sub Connect_Callback(ar As IAsyncResult)
   

   allDone.Set()
   Dim s As Socket = CType(ar.AsyncState, Socket)
   s.EndConnect(ar)
   Dim so2 As New StateObject()
   so2.workSocket = s
   Dim buff As Byte() = Encoding.ASCII.GetBytes("This is a test")
   s.BeginSend(buff, 0, buff.Length, 0, New AsyncCallback(AddressOf Async_Send_Receive.Send_Callback), so2)
End Sub

Комментарии

Метод BeginSend запускает асинхронную операцию отправки удаленному узлу, установленному в методе Connect, BeginConnectAcceptили BeginAccept методе. BeginSendвызывает исключение, если вы не вызываете первый вызовAccept, BeginAcceptConnectили BeginConnect. BeginSend Вызов метода дает возможность отправлять данные в отдельном потоке выполнения.

Можно создать метод обратного вызова, который реализует AsyncCallback делегат и передает его имя методу BeginSend . Для этого, по крайней мере, параметр state должен содержать подключенный или используемый по умолчанию параметр Socket для обмена данными. Если обратному вызову требуется дополнительная информация, можно создать небольшой класс или структуру для хранения Socket и других необходимых сведений. Передайте экземпляр этого класса методу BeginSend через state параметр.

Метод обратного EndSend вызова должен вызывать метод. При вызове BeginSendприложения система будет использовать отдельный поток для выполнения указанного метода обратного вызова и будет блокироваться EndSend до тех пор, пока Socket число запрошенных байтов не вызовет исключение. Если вы хотите, чтобы исходный поток блокировать после вызова BeginSend метода, используйте WaitHandle.WaitOne этот метод. Вызовите метод Set для T:System.Threading.ManualResetEvent в методе обратного вызова, если вы хотите, чтобы исходный поток продолжал выполняться. Дополнительные сведения о написании методов обратного вызова см. в разделе маршалинг делегата в качестве метода обратного вызова.

Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что вы сначала вызываете Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла по умолчанию с Connect. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, датаграмма не будет отправлена и BeginSend вызовет SocketExceptionисключение .

Если в качестве socketflags параметра указать DontRoute флаг, отправляемые данные не будут перенаправлены.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

Примечание

state — это экземпляр определяемого пользователем класса.

Примечание

Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство в транспортной системе для хранения передаваемых данных недоступно, отправка будет блокироваться, если сокет не был помещен в неблокировочный режим.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и вызывающий контекст) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, конкретный Socket экземпляр и конкретный обратный вызов) последующие использования этого контекста увидят улучшение производительности.

См. также раздел

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