Sdílet prostřednictvím


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

Definice

Začíná asynchronní čtení z objektu NetworkStream.

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

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním v paměti pro ukládání dat přečtených z objektu NetworkStream.

offset
Int32

Umístění v, ve buffer které se mají data začít ukládat.

sizecount
Int32

Počet bajtů, které se mají přečíst z NetworkStream.

callback
AsyncCallback

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

state
Object

Objekt, který obsahuje další data definovaná uživatelem.

Návraty

Představuje 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 parametru buffer paramater.

-nebo-

Hodnota size je menší než 0.

-nebo-

Hodnota size je větší než délka buffer parametru minus hodnota parametru offset .

Podkladová položka Socket je uzavřená.

-nebo-

Při čtení ze 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. Nedoporučujeme používat metody APM (Begin/End) pro nový vývoj. Místo toho použijte ekvivalenty založené na úlohách.

Zpětné volání, které se implementuje AsyncCallback do BeginRead , můžete předat, abyste dostali oznámení o dokončení operace. Všimněte si, že pokud podkladová síťová sada dokončí operaci synchronně, provede se zpětné volání vložené během volání .BeginRead V tomto případě CompletedSynchronously bude vlastnost vrácena IAsyncResult nastavena na , true aby bylo možné označit, že metoda byla dokončena synchronně. AsyncState K získání objektu stavu předaného BeginRead metodě použijte vlastnost IAsyncResult .

Operace BeginRead musí být dokončena voláním EndRead metody . Metoda je obvykle vyvolána poskytnutým AsyncCallback delegátem. EndRead až do dokončení operace zablokuje volající vlákno.

Operace načte tolik dat, kolik je k dispozici, až do počtu bajtů určených parametrem size .

Poznámka

Pokud obdržíte IOException, zkontrolujte vlastnost a InnerException zjistěte, jestli nebyla způsobená SocketException. Pokud ano, použijte ErrorCode vlastnost k získání konkrétního kódu chyby.

Operace čtení a zápisu lze na instanci NetworkStream třídy provádět současně 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 existovat žádné vzájemné rušení a není nutná žádná synchronizace.

Platí pro

Viz také