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. (Místo toho zvažte použití WriteAsync(Byte[], Int32, Int32) .)
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 z.
- offset
- Int32
Posun bajtu buffer , ze kterého 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 při dokončení zápisu.
- state
- Object
Objekt poskytovaný uživatelem, který rozlišuje tento konkrétní asynchronní požadavek zápisu od jiných požadavků.
Návraty
Jedná se o IAsyncResult asynchronní zápis, který může být stále čekající.
Výjimky
Došlo k pokusu o asynchronní zápis za konec 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 starších verzích musíte použít metody, jako BeginWrite jsou a EndWrite implementovat asynchronní vstupně-výstupní operace. Tyto metody jsou stále k dispozici v rozhraní .NET Framework 4.5 pro podporu staršího kódu; Nové asynchronní metody, například ReadAsync, WriteAsync, CopyToAsynca FlushAsync, vám však pomáhají snadněji implementovat asynchronní vstupně-výstupní operace.
Výchozí implementace streamu BeginWrite volá metodu Write synchronně, což znamená, že Write může blokovat některé datové proudy. Instance tříd, jako FileStream jsou a NetworkStream plně podporují asynchronní operace, pokud byly instance otevřeny asynchronně. Proto volání, která nebudou BeginWrite u těchto datových proudů blokovaná. Asynchronní chování můžete přepsat BeginWrite (například pomocí asynchronních delegátů).
IAsyncResult Předejte vrácenou aktuální metodou, aby EndWrite se zajistilo, že zápis dokončí a uvolní prostředky odpovídajícím způsobem.
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 BeginWrite , nebo v zpětném volání předané BeginWrite. Pokud dojde k chybě během asynchronního zápisu, výjimka nebude vyvolána, dokud EndWrite nebude volána s IAsyncResult vrácenou touto metodou.
Pokud je datový proud zapisovatelný, zápis na konci datového proudu tento datový proud rozbalí.
Aktuální pozice v datovém proudu se aktualizuje, když vydáte asynchronní čtení nebo zápis, ne po dokončení vstupně-výstupní operace. Více souběžných asynchronních požadavků vykreslí pořadí dokončení požadavku nejistě.
CanWrite Pomocí vlastnosti 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. Chyby, ke kterým dochází během asynchronního požadavku na zápis, například selhání disku během V/V požadavku, dochází ve vlákně fondu vláken a při volání EndWritevyvolá výjimku .