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 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.
- offset
- Int32
Odsazení buffer
bajtů, ze kterého se má 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
Představuje IAsyncResult
asynchronní zápis, který může stále čekat na vyřízení.
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ých.
Metody byly volány po uzavř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 k dispozici v rozhraní .NET Framework 4.5 pro podporu starší verze kódu; Nové asynchronní metody, jako ReadAsyncjsou , WriteAsyncCopyToAsync, a FlushAsync, však pomáhají snadněji implementovat asynchronní vstupně-výstupní operace.
Výchozí implementace BeginWrite
v datovém proudu volá metodu Write synchronně, což znamená, že Write
to může u některých datových proudů blokovat. Instance tříd, jako FileStream
NetworkStream
a , však plně podporují asynchronní operace, pokud instance byly otevřeny asynchronně. Volání metody proto 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ácené aktuální metodou do , EndWrite aby se zajistilo, že se zápis správně dokončí a uvolní prostředky. EndWritemusí 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 ve zpětném volání předaném do BeginWrite
. Pokud dojde k chybě během asynchronního zápisu, výjimka nebude vyvolána, dokud EndWrite
je volána s IAsyncResult
vrácenou touto metodou.
Pokud je datový proud zapisovatelný, zápisem na konec datového proudu se datový proud rozšíří.
Aktuální pozice v datovém proudu se aktualizuje při asynchronním čtení nebo zápisu, ne při dokončení vstupně-výstupní operace. Více souběžných asynchronních požadavků vykreslí pořadí dokončení požadavků na 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, jsou výjimky vyvolány okamžitě z BeginWrite
. Chyby, ke kterým dochází během asynchronního požadavku na zápis, jako je například selhání disku během požadavku na vstupně-výstupní operace, se vyskytují ve vlákně fondu vláken a při volání vyvolají EndWrite
výjimky .