NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Začne asynchronní čtení z objektu NetworkStream.
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::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);
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, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, size 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 načtených z objektu NetworkStream.
- offset
- Int32
Umístění buffer pro zahájení ukládání dat.
- countsize
- Int32
Počet bajtů, které mají být načteny z objektu NetworkStream.
- callback
- AsyncCallback
Delegát AsyncCallback , který se spustí po BeginRead(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 paramateru buffer .
nebo
Hodnota size je menší než 0.
nebo
Je size větší než délka buffer mínus hodnoty parametru offset .
Podklad 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ě.
To NetworkStream je uzavřeno.
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 , BeginRead 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í BeginRead. 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ěBeginRead.
Operace BeginRead musí být dokončena voláním EndRead metody. Metoda je obvykle vyvolána zadaným AsyncCallback delegátem. EndRead zablokuje volající vlákno, dokud se operace nedokončila.
Operace čte tolik dat, kolik je k dispozici, až do počtu bajtů určených parametrem count .
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.