Stream.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. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).
public:
virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- buffer
- Byte[]
Bufor do zapisywania danych z.
- offset
- Int32
Przesunięcie bajtu, buffer
od którego rozpocznie się pisanie.
- count
- Int32
Maksymalna liczba bajtów do zapisu.
- callback
- AsyncCallback
Opcjonalne wywołanie asynchroniczne, które ma być wywoływane po zakończeniu zapisu.
- state
- Object
Obiekt dostarczony przez użytkownika, który odróżnia to konkretne asynchroniczne żądanie zapisu od innych żądań.
Zwraca
Element IAsyncResult
reprezentujący zapis asynchroniczny, który nadal może być oczekujący.
Wyjątki
Podjęto próbę asynchronicznego zapisu poza końcem strumienia lub wystąpił błąd dysku.
Co najmniej jeden argument jest nieprawidłowy.
Metody zostały wywołane po zamknięciu strumienia.
Bieżąca Stream
implementacja nie obsługuje operacji zapisu.
Uwagi
W programie .NET Framework w wersji 4 i starszych do implementowania asynchronicznych operacji We/Wy należy używać metod takich jak BeginWrite i EndWrite. Te metody są nadal dostępne w .NET Framework 4.5 do obsługi starszego kodu. Jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsync, CopyToAsynci FlushAsync, ułatwiają implementowanie asynchronicznych operacji we/wy.
Domyślna implementacja elementu w strumieniu BeginWrite
wywołuje Write metodę synchronicznie, co oznacza, że może to Write
blokować niektóre strumienie. Jednak wystąpienia klas, takich jak FileStream
i NetworkStream
w pełni obsługują operacje asynchroniczne, jeśli wystąpienia zostały otwarte asynchronicznie. W związku z tym wywołania metody do BeginWrite
metody nie będą blokować tych strumieni. Możesz przesłonić BeginWrite
(na przykład za pomocą delegatów asynchronicznych), aby zapewnić zachowanie asynchroniczne.
IAsyncResult
Przekaż element zwrócony przez bieżącą metodę, aby EndWrite upewnić się, że zapis zostanie ukończony i zwolni zasoby odpowiednio. EndWrite musi być wywoływany raz dla każdego wywołania metody BeginWrite. Można to zrobić przy użyciu tego samego kodu, który wywołuje BeginWrite
metodę lub w wywołaniu zwrotnym przekazanym do metody BeginWrite
. Jeśli podczas zapisu asynchronicznego wystąpi błąd, wyjątek nie zostanie zgłoszony do momentu EndWrite
wywołania metody zwracanej IAsyncResult
przez tę metodę.
Jeśli strumień jest zapisywalny, zapis na końcu strumienia rozszerza strumień.
Bieżące położenie w strumieniu jest aktualizowane po wystąpieniu asynchronicznego odczytu lub zapisu, a nie po zakończeniu operacji we/wy. Wiele równoczesnych żądań asynchronicznych sprawia, że kolejność ukończenia żądania jest niepewna.
CanWrite Użyj właściwości , aby określić, czy bieżące wystąpienie obsługuje zapisywanie.
Jeśli strumień jest zamknięty lub przekazujesz nieprawidłowy argument, wyjątki są zgłaszane natychmiast z elementu BeginWrite
. Błędy występujące podczas asynchronicznego żądania zapisu, takie jak błąd dysku podczas żądania we/wy, występują w wątku puli wątków i zgłaszają wyjątki podczas wywoływania metody EndWrite
.