Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zahájí asynchronní operaci zápisu. (Zvažte místo toho WriteAsync(Byte[], Int32, Int32) použití .)
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[]
Vyrovnávací paměť pro zápis dat.
- offset
- Int32
Posun bajtů, ve buffer
kterém chcete začít psát.
- count
- Int32
Maximální počet bajtů k zápisu.
- callback
- AsyncCallback
Volitelné asynchronní zpětné volání, které se má volat po dokončení zápisu.
- state
- Object
Uživatelem zadaný objekt, který odlišuje tento konkrétní asynchronní požadavek na zápis od ostatních požadavků.
Návraty
Objekt IAsyncResult
, který představuje asynchronní zápis, který může být stále čeká na vyřízení.
Výjimky
Došlo k pokusu o asynchronní zápis za koncem datového proudu nebo dojde k chybě disku.
Jeden nebo více argumentů je neplatný.
Metody byly volány po zavření datového proudu.
Aktuální Stream
implementace nepodporuje operaci zápisu.
Poznámky
V rozhraní .NET Framework 4 a předchozích verzích je pro implementaci asynchronních vstupně-výstupních operací nutné použít metody, jako jsou BeginWrite a EndWrite. Tyto metody jsou stále dostupné v .NET Framework 4.5 pro podporu starší verze kódu. Nové asynchronní metody, jako jsou , , a , ale pomáhají snadněji implementovat asynchronní ReadAsync WriteAsync CopyToAsync FlushAsync V/V operace.
Výchozí implementace metody BeginWrite
ve streamu volá Write metodu synchronně, což znamená, že u některých datových proudů může Write
být blok. Instance tříd, jako jsou a plně podporují asynchronní operace, pokud byly instance otevřeny FileStream
NetworkStream
asynchronně. Proto volání metody BeginWrite
nebudou u těchto datových proudů blokovat. Asynchronní chování můžete přepsat (například pomocí asynchronních BeginWrite
delegátů).
Předejte metodu vrácenou aktuální metodou do , aby se zajistilo, že se zápis dokončí a odpovídajícím způsobem IAsyncResult
EndWrite uvolnéhodí prostředky. EndWrite musí být volána jednou pro každé volání BeginWrite . Můžete to provést buď pomocí stejného kódu, který volal nebo BeginWrite
ve zpětném volání předaly BeginWrite
. Pokud dojde k chybě během asynchronního zápisu, výjimka nebude vyvolána, dokud není volána EndWrite
s IAsyncResult
vrácenou touto metodou.
Pokud je datový proud zapisovatelný, zápis na konci streamu rozšíří datový proud.
Aktuální pozice ve streamu se aktualizuje, když vydáte asynchronní čtení nebo zápis, ne po dokončení V/V operace. Několik souběžných asynchronních požadavků vykreslí nejistý pořadí dokončení požadavku.
Pomocí vlastnosti CanWrite určete, zda aktuální instance podporuje zápis.
Pokud je datový proud uzavřen nebo předáte neplatný argument, výjimky jsou vyvolány okamžitě z BeginWrite
. K chybám, ke kterým dochází během asynchronního požadavku na zápis, jako je například selhání disku během V/V požadavku, dochází ve vlákně fondu vláken a při volání vyvolá EndWrite
výjimky.