NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Rozpoczyna asynchroniczny odczyt z pliku 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[]
Tablica typuByte, która jest lokalizacją w pamięci do przechowywania danych odczytanych z .NetworkStream
- offset
- Int32
Lokalizacja do buffer
rozpoczęcia przechowywania danych.
- sizecount
- Int32
Liczba bajtów do odczytania z elementu NetworkStream.
- callback
- AsyncCallback
Delegat AsyncCallback , który jest wykonywany po BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) zakończeniu.
- state
- Object
Obiekt, który zawiera dodatkowe dane zdefiniowane przez użytkownika.
Zwraca
Obiekt IAsyncResult reprezentujący wywołanie asynchroniczne.
Wyjątki
Parametr buffer
ma wartość null
.
Parametr offset
jest mniejszy niż 0.
-lub-
Parametr offset
jest większy niż długość parametru buffer
.
-lub-
Wartość size
jest mniejsza niż 0.
-lub-
Wartość size
parametru jest większa niż długość buffer
odmętą wartości parametru offset
.
Socket Podstawowy element jest zamknięty.
-lub-
Wystąpił błąd podczas odczytywania z sieci.
-lub-
Wystąpił błąd podczas uzyskiwania dostępu do gniazda.
Element NetworkStream jest zamknięty.
Uwagi
Ważne
Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin/End) do tworzenia nowych aplikacji. Zamiast tego należy użyć odpowiedników opartych na zadaniach.
Możesz przekazać wywołanie zwrotne implementujące AsyncCallback element , aby BeginRead otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginRead. W takim przypadku właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazaćtrue
, CompletedSynchronously że metoda została ukończona synchronicznie.
AsyncState Użyj właściwości , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginRead metody .
Operacja musi zostać ukończona BeginRead przez wywołanie EndRead metody . Zazwyczaj metoda jest wywoływana przez dostarczonego AsyncCallback delegata. EndRead Zablokuje wątek wywołujący do momentu ukończenia operacji.
Operacja odczytuje tyle danych, ile jest dostępnych, do liczby bajtów określonych przez size
parametr .
Uwaga
Jeśli otrzymasz element IOException, sprawdź InnerException właściwość , aby ustalić, czy została ona spowodowana przez element SocketException. Jeśli tak, użyj ErrorCode właściwości , aby uzyskać określony kod błędu.
Operacje odczytu i zapisu można wykonywać jednocześnie na wystąpieniu NetworkStream klasy bez konieczności synchronizacji. Tak długo, jak istnieje jeden unikatowy wątek dla operacji zapisu i jeden unikatowy wątek dla operacji odczytu, nie będzie żadnych zakłóceń między wątkami odczytu i zapisu, a synchronizacja nie jest wymagana.