Udostępnij za pośrednictwem


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

Definicja

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.

Dotyczy

Zobacz też