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

Definition

Påbörjar en asynkron skrivåtgärd. (Överväg att använda WriteAsync(Byte[], Int32, Int32) i stället.)

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

Parametrar

buffer
Byte[]

Bufferten att skriva data från.

offset
Int32

Byteförskjutningen buffer som du vill börja skriva från.

count
Int32

Det maximala antalet byte som ska skrivas.

callback
AsyncCallback

Ett valfritt asynkront återanrop som ska anropas när skrivning är klar.

state
Object

Ett objekt som tillhandahålls av användaren och som skiljer den här specifika asynkrona skrivbegäran från andra begäranden.

Returer

En IAsyncResult som representerar den asynkrona skrivning som fortfarande kan vänta.

Undantag

Försökte skriva asynkront efter strömmens slut, eller så uppstår ett diskfel.

Ett eller flera av argumenten är ogiltiga.

Metoder anropades efter att strömmen stängdes.

Den aktuella Stream implementeringen stöder inte skrivåtgärden.

Kommentarer

I .NET Framework 4 och tidigare versioner måste du använda metoder som BeginWrite och EndWrite för att implementera asynkrona I/O-åtgärder. Dessa metoder är fortfarande tillgängliga i .NET Framework 4.5 för att stödja äldre kod. De nya asynkrona metoderna, till exempel ReadAsync, WriteAsync, CopyToAsync och FlushAsync, hjälper dig att implementera asynkrona I/O-åtgärder enklare.

Standardimplementeringen av BeginWrite på en ström anropar Write metoden synkront, vilket innebär att det Write kan blockeras på vissa strömmar. Instanser av klasser som FileStream och NetworkStream stöder helt asynkrona åtgärder om instanserna har öppnats asynkront. Därför blockeras inte anrop till BeginWrite på dessa strömmar. Du kan åsidosätta BeginWrite (genom att till exempel använda asynkrona ombud) för att tillhandahålla asynkront beteende.

Skicka det IAsyncResult som returneras av den aktuella metoden för EndWrite att säkerställa att skrivningen slutförs och frigör resurser på rätt sätt. EndWrite måste anropas en gång för varje anrop till BeginWrite. Du kan göra detta antingen med hjälp av samma kod som anropade BeginWrite eller i ett återanrop som skickades till BeginWrite. Om ett fel inträffar under en asynkron skrivning utlöses inte ett undantag förrän EndWrite det anropas med den IAsyncResult returnerade metoden.

Om en ström är skrivbar expanderar skrivning i slutet av strömmen strömmen.

Den aktuella positionen i strömmen uppdateras när du utfärdar asynkron läsning eller skrivning, inte när I/O-åtgärden slutförs. Flera samtidiga asynkrona begäranden gör begärandeslutordningen osäker.

Använd egenskapen CanWrite för att avgöra om den aktuella instansen stöder skrivning.

Om en dataström stängs eller om du skickar ett ogiltigt argument genereras undantag omedelbart från BeginWrite. Fel som uppstår under en asynkron skrivbegäran, till exempel ett diskfel under I/O-begäran, inträffar i trådpoolstråden och utlöser undantag när du anropar EndWrite.

Gäller för

Se även