Udostępnij za pośrednictwem


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 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.

Dotyczy

Zobacz też