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

Definicja

Rozpoczyna asynchroniczne operacje zapisu.Begins an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast niego).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

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);
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, z którego mają zostać zapisane dane.The buffer to write data from.

offset
Int32

Przesunięcie bajtu, buffer od którego ma zacząć pisać.The byte offset in buffer from which to begin writing.

count
Int32

Maksymalna liczba bajtów do zapisania.The maximum number of bytes to write.

callback
AsyncCallback

Opcjonalne asynchroniczne wywołanie zwrotne, które ma być wywoływane po zakończeniu zapisu.An optional asynchronous callback, to be called when the write is complete.

state
Object

Obiekt udostępniony przez użytkownika, który odróżnia to konkretne asynchroniczne żądanie zapisu z innych żądań.A user-provided object that distinguishes this particular asynchronous write request from other requests.

Zwraca

IAsyncResult Reprezentuje zapis asynchroniczny, który nadal może być w stanie oczekiwania.An IAsyncResult that represents the asynchronous write, which could still be pending.

Wyjątki

Podjęto próbę zapisu asynchronicznego poza końcem strumienia lub wystąpił błąd dysku.Attempted an asynchronous write past the end of the stream, or a disk error occurs.

Co najmniej jeden z argumentów jest nieprawidłowy.One or more of the arguments is invalid.

Metody zostały wywołane po zamknięciu strumienia.Methods were called after the stream was closed.

Bieżąca Stream implementacja nie obsługuje operacji zapisu.The current Stream implementation does not support the write operation.

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.In the .NET Framework 4 and earlier versions, you have to use methods such as BeginWrite and EndWrite to implement asynchronous I/O operations. Te metody są nadal dostępne w programie .NET Framework 4.5.NET Framework 4.5 w celu obsługi starszego kodu, jednak nowe metody asynchroniczne, takie jak ReadAsync, WriteAsync CopyToAsync,, i FlushAsync, ułatwiają wdrożenie asynchronicznych operacji we/wy.These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

Domyślna implementacja BeginWrite w strumieniu Write wywołuje metodę synchronicznie, co oznacza, że Write może blokować pewne strumienie.The default implementation of BeginWrite on a stream calls the Write method synchronously, which means that Write might block on some streams. Jednak wystąpienia klas, takie jak i FileStream NetworkStream w pełni obsługują operacje asynchroniczne, jeśli wystąpienia zostały otwarte asynchronicznie.However, instances of classes such as FileStream and NetworkStream fully support asynchronous operations if the instances have been opened asynchronously. W związku z BeginWrite tym wywołania nie będą blokować tych strumieni.Therefore, calls to BeginWrite will not block on those streams. Aby zapewnić asynchroniczne BeginWrite zachowanie, można przesłonić (na przykład za pomocą delegatów asynchronicznych).You can override BeginWrite (by using async delegates, for example) to provide asynchronous behavior.

Przekaż zwrócone przez bieżącą metodę do EndWrite , aby upewnić się, że zapis kończy się i odpowiednio zwalnia zasoby. IAsyncResultPass the IAsyncResult returned by the current method to EndWrite to ensure that the write completes and frees resources appropriately. EndWritemusi być wywoływana jednokrotnie dla każdego BeginWritewywołania do.EndWrite must be called once for every call to BeginWrite. Można to zrobić przy użyciu tego samego kodu, który został wywołany BeginWrite , lub w wywołaniu zwrotnym przekazanym do. BeginWriteYou can do this either by using the same code that called BeginWrite or in a callback passed to BeginWrite. Jeśli wystąpi błąd podczas zapisu asynchronicznego, wyjątek nie zostanie zgłoszony, dopóki EndWrite nie zostanie wywołany IAsyncResult z zwróconym przez tę metodę.If an error occurs during an asynchronous write, an exception will not be thrown until EndWrite is called with the IAsyncResult returned by this method.

Jeśli strumień jest zapisywalny, zapis na końcu strumienia rozszerza strumień.If a stream is writable, writing at the end of the stream expands the stream.

Bieżące położenie w strumieniu jest aktualizowane, gdy zostanie wystawiony asynchroniczny odczyt lub zapis, a nie po zakończeniu operacji we/wy.The current position in the stream is updated when you issue the asynchronous read or write, not when the I/O operation completes. Wiele jednoczesnych żądań asynchronicznych renderuje kolejność uzupełniania żądań.Multiple simultaneous asynchronous requests render the request completion order uncertain.

CanWrite Użyj właściwości, aby określić, czy bieżące wystąpienie obsługuje zapisywanie.Use the CanWrite property to determine whether the current instance supports writing.

Jeśli strumień jest zamknięty lub przeszedł nieprawidłowy argument, wyjątki są zgłaszane od BeginWriterazu.If a stream is closed or you pass an invalid argument, exceptions are thrown immediately from BeginWrite. Błędy występujące podczas asynchronicznego żądania zapisu, takie jak awaria dysku w trakcie żądania we/wy, występuje w wątku puli wątków i generują wyjątki podczas wywoływania EndWrite.Errors that occur during an asynchronous write request, such as a disk failure during the I/O request, occur on the thread pool thread and throw exceptions when calling EndWrite.

Dotyczy

Zobacz też