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

Definicja

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 typu Byte , która jest lokalizacją w pamięci do przechowywania danych odczytanych z elementu NetworkStream.

offset
Int32

Lokalizacja, w ramach buffer która rozpocznie przechowywanie 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 zawierający wszelkie dodatkowe dane zdefiniowane przez użytkownika.

Zwraca

Element IAsyncResult reprezentujący wywołanie asynchroniczne.

Wyjątki

Parametr buffer to null.

Parametr offset jest mniejszy niż 0.

-lub-

Parametr offset jest większy niż długość buffer paramatera.

-lub-

Wartość size jest mniejsza niż 0.

-lub-

Wartość size jest większa niż długość buffer minus 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) na potrzeby nowego programowania. Zamiast tego należy użyć odpowiedników opartych na zadaniach.

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback polecenie , BeginRead aby 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 CompletedSynchronously właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazać true , że metoda została ukończona synchronicznie. AsyncState Użyj właściwości obiektu , 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 podanego 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 obiekt IOException, sprawdź InnerException właściwość , aby określić, czy została spowodowana przez SocketExceptionelement . 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 krzyżowych interferencji między wątkami odczytu i zapisu, a synchronizacja nie jest wymagana.

Dotyczy

Zobacz też