NetworkStream.BeginWrite(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 asynchroniczną operację zapisu w strumieniu.
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginWrite (byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- buffer
- Byte[]
Tablica typu Byte zawierająca dane do zapisu w obiekcie NetworkStream.
- offset
- Int32
Lokalizacja w programie , w buffer
celu rozpoczęcia wysyłania danych.
- sizecount
- Int32
Liczba bajtów do zapisania w obiekcie NetworkStream.
- callback
- AsyncCallback
Delegat AsyncCallback , który jest wykonywany po BeginWrite(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ść buffer
.
-lub-
Parametr size
jest mniejszy niż 0.
-lub-
Parametr size
jest większy niż długość buffer
minus wartość parametru offset
.
Socket Podstawowy element jest zamknięty.
-lub-
Wystąpił błąd podczas zapisywania w 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 BeginWrite 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 BeginWrite. 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 BeginWrite metody .
Operacja musi zostać ukończona BeginWrite przez wywołanie EndWrite metody . Zazwyczaj metoda jest wywoływana przez dostarczonego AsyncCallback delegata. EndWrite Zablokuje wątek wywołujący do momentu ukończenia operacji.
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.