Sdílet prostřednictvím


NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Metoda

Definice

Zahájí asynchronní zápis do datového proudu.

public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, 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 size, 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, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

buffer
Byte[]

Pole typu Byte obsahující data, která se mají zapisovat do objektu NetworkStream.

offset
Int32

Umístění buffer pro zahájení odesílání dat.

countsize
Int32

Počet bajtů, které se mají zapisovat do NetworkStream.

callback
AsyncCallback

Delegát AsyncCallback , který se spustí po BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) dokončení.

state
Object

Objekt, který obsahuje všechna další uživatelsky definovaná data.

Návraty

Jedná se o IAsyncResult asynchronní volání.

Výjimky

Parametr buffer je null.

Parametr offset je menší než 0.

nebo

Parametr offset je větší než délka buffer.

nebo

Parametr size je menší než 0.

nebo

Parametr size je větší než délka buffer mínus hodnoty parametru offset .

Podklad Socket je uzavřen.

nebo

Při zápisu do sítě došlo k chybě.

nebo

Při přístupu k soketu došlo k chybě.

Poznámky

Důležité

Toto je rozhraní API pro kompatibilitu. Pro nový vývoj nedoporučujeme používat metody APM (Begin/End). Místo toho použijte ekvivalenty založené na úlohách.

Můžete předat zpětné volání, které implementuje AsyncCallback , BeginWrite aby bylo možné dostávat oznámení o dokončení operace. Všimněte si, že pokud podkladový síťový zásobník dokončí operaci synchronně, bude zpětné volání spuštěno přímo během volání BeginWrite. V tomto případě bude vlastnost vrácena CompletedSynchronously nastavena tak, aby IAsyncResult indikovat, true že metoda byla dokončena synchronně. AsyncState Použijte vlastnost IAsyncResult k získání objektu stavu předaného metoděBeginWrite.

Operace BeginWrite musí být dokončena voláním EndWrite metody. Metoda je obvykle vyvolána zadaným AsyncCallback delegátem. EndWrite zablokuje volající vlákno, dokud se operace nedokončila.

Poznámka:

Pokud obdržíte , IOExceptionzkontrolujte InnerException vlastnost a zjistěte, zda byla způsobena SocketException. Pokud ano, použijte ErrorCode vlastnost k získání konkrétního kódu chyby.

Operace čtení a zápisu lze provádět současně s instancí NetworkStream třídy bez nutnosti synchronizace. Pokud existuje jedno jedinečné vlákno pro operace zápisu a jedno jedinečné vlákno pro operace čtení, nebude mezi vlákny čtení a zápisu žádná křížová interference a nevyžaduje se žádná synchronizace.

Platí pro

Viz také