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

Definitie

Hiermee wordt een asynchrone schrijfbewerking gestart. (Overweeg in plaats daarvan om te gebruiken 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);
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

Parameters

buffer
Byte[]

De buffer waaruit gegevens moeten worden geschreven.

offset
Int32

De byte-offset buffer van waaruit moet worden geschreven.

count
Int32

Het maximum aantal bytes dat moet worden geschreven.

callback
AsyncCallback

Een optionele asynchrone callback die moet worden aangeroepen wanneer de schrijfbewerking is voltooid.

state
Object

Een door de gebruiker verstrekt object dat deze specifieke asynchrone schrijfaanvraag onderscheidt van andere aanvragen.

Retouren

Een IAsyncResult die de asynchrone schrijfbewerking vertegenwoordigt, die nog in behandeling kan zijn.

Uitzonderingen

Er is een asynchrone schrijfbewerking uitgevoerd voorbij het einde van de stream of er treedt een schijffout op.

Een of meer argumenten zijn ongeldig.

Methoden werden aangeroepen nadat de stream is gesloten.

De huidige Stream implementatie biedt geen ondersteuning voor de schrijfbewerking.

Opmerkingen

In de .NET Framework 4- en eerdere versies moet u methoden zoals BeginWrite en EndWrite gebruiken om asynchrone I/O-bewerkingen te implementeren. Deze methoden zijn nog steeds beschikbaar in het .NET Framework 4.5 ter ondersteuning van verouderde code. De nieuwe asynchrone methoden, zoals ReadAsync, WriteAsync, CopyToAsync en FlushAsync, helpen u bij het eenvoudiger implementeren van asynchrone I/O-bewerkingen.

De standaard implementatie van BeginWrite een stream roept de Write methode synchroon aan, wat betekent dat Write sommige streams mogelijk worden geblokkeerd. Exemplaren van klassen, zoals FileStream en NetworkStream bieden echter volledige ondersteuning voor asynchrone bewerkingen als de exemplaren asynchroon zijn geopend. Oproepen om deze streams daarom niet te BeginWrite blokkeren. U kunt (bijvoorbeeld met behulp van asynchrone gemachtigden) overschrijven BeginWrite om asynchroon gedrag te bieden.

Geef de IAsyncResult geretourneerde door de huidige methode door om ervoor te EndWrite zorgen dat de schrijfbewerking is voltooid en resources op de juiste manier vrijkomt. EndWrite moet één keer worden gebeld voor elke oproep naar BeginWrite. U kunt dit doen met behulp van dezelfde code die wordt aangeroepen BeginWrite of in een callback die is doorgegeven aan BeginWrite. Als er een fout optreedt tijdens een asynchrone schrijfbewerking, wordt er pas een uitzondering gegenereerd wanneer EndWrite deze wordt aangeroepen met de IAsyncResult geretourneerde methode.

Als een stream schrijfbaar is, wordt de stream uitgebreid door aan het einde van de stroom te schrijven.

De huidige positie in de stream wordt bijgewerkt wanneer u de asynchrone lees- of schrijfbewerking geeft, niet wanneer de I/O-bewerking is voltooid. Meerdere gelijktijdige asynchrone aanvragen zorgen ervoor dat de voltooiingsvolgorde van de aanvraag onzeker is.

Gebruik de CanWrite eigenschap om te bepalen of het huidige exemplaar ondersteuning biedt voor schrijven.

Als een stream is gesloten of u een ongeldig argument doorgeeft, worden er direct uitzonderingen gegenereerd.BeginWrite Fouten die optreden tijdens een asynchrone schrijfaanvraag, zoals een schijffout tijdens de I/O-aanvraag, treden op in de thread van de thread van de threadgroep en genereren uitzonderingen bij het aanroepen EndWrite.

Van toepassing op

Zie ook