NegotiateStream.BeginWrite Methode

Definitie

Hiermee wordt een asynchrone schrijfbewerking gestart die s van de opgegeven buffer naar de stream schrijft Byte.

public:
 override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult

Parameters

buffer
Byte[]

Een Byte matrix die de bytes levert die naar de stream moeten worden geschreven.

offset
Int32

De locatie buffer op basis van nul waarop bytes moeten worden gelezen die naar de stream moeten worden geschreven.

count
Int32

Een Int32 waarde die het aantal bytes aangeeft waaruit moet worden gelezen buffer.

asyncCallback
AsyncCallback

Een AsyncCallback gemachtigde die verwijst naar de methode die moet worden aangeroepen wanneer de schrijfbewerking is voltooid.

asyncState
Object

Een door de gebruiker gedefinieerd object met informatie over de schrijfbewerking. Dit object wordt doorgegeven aan de asyncCallback gemachtigde wanneer de bewerking is voltooid.

Retouren

Een IAsyncResult object dat de status van de asynchrone bewerking aangeeft.

Uitzonderingen

buffer is null.

offset is kleiner dan 0.

– of –

offset is groter dan de lengte van buffer.

– of –

offset plustelling is groter dan de lengte van buffer.

De schrijfbewerking is mislukt.

– of –

Versleuteling wordt gebruikt, maar de gegevens kunnen niet worden versleuteld.

Er wordt al een schrijfbewerking uitgevoerd.

Dit object is gesloten.

Er is geen verificatie opgetreden.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een asynchrone schrijfbewerking start.

// Request authentication.
NetworkStream clientStream = client.GetStream();
NegotiateStream authStream = new NegotiateStream(clientStream, false);
// Pass the NegotiateStream as the AsyncState object
// so that it is available to the callback delegate.
Task authenticateTask = authStream
    .AuthenticateAsClientAsync()
    .ContinueWith(task =>
    {
        Console.WriteLine("Client ending authentication...");
        Console.WriteLine("ImpersonationLevel: {0}", authStream.ImpersonationLevel);
    });

Console.WriteLine("Client waiting for authentication...");
// Wait until the result is available.
authenticateTask.Wait();
// Display the properties of the authenticated stream.
AuthenticatedStreamReporter.DisplayProperties(authStream);
// Send a message to the server.
// Encode the test data into a byte array.
byte[] message = Encoding.UTF8.GetBytes("Hello from the client.");
Task writeTask = authStream
    .WriteAsync(message, 0, message.Length)
    .ContinueWith(task =>
    {
        Console.WriteLine("Client ending write operation...");
    });

' Request authentication.
Dim clientStream = client.GetStream()
Dim authStream As New NegotiateStream(clientStream, False)

' Pass the NegotiateStream as the AsyncState object 
' so that it is available to the callback delegate.
Dim ar = authStream.BeginAuthenticateAsClient(
    New AsyncCallback(AddressOf EndAuthenticateCallback), authStream)

Console.WriteLine("Client waiting for authentication...")

' Wait until the result is available.
ar.AsyncWaitHandle.WaitOne()

' Display the properties of the authenticated stream.
AuthenticatedStreamReporter.DisplayProperties(authStream)

' Send a message to the server.
' Encode the test data into a byte array.
Dim message = Encoding.UTF8.GetBytes("Hello from the client.")
ar = authStream.BeginWrite(message, 0, message.Length, 
    New AsyncCallback(AddressOf EndWriteCallback), authStream)

De volgende methode wordt aangeroepen wanneer de bewerking is voltooid.

' The following method is called when the write operation completes.
Public Shared Sub EndWriteCallback(ar As IAsyncResult)

    Console.WriteLine("Client ending write operation...")
    Dim authStream = CType(ar.AsyncState, NegotiateStream)

    ' End the asynchronous operation.
    authStream.EndWrite(ar)

End Sub

Opmerkingen

Als versleuteling, ondertekening of versleuteling en ondertekening zijn ingeschakeld, leest deze methode de gegevens uit buffer, versleutelt, ondertekent of ondertekent en ondertekent en verzendt deze met behulp van de onderliggende stroom. Als er geen beveiligingsservices zoals gegevensversleuteling of ondertekening worden gebruikt, start deze methode een asynchrone schrijfbewerking op de onderliggende stroom.

Deze methode is asynchroon en blokkeert niet terwijl de bewerking is voltooid. Gebruik de Read methode om te blokkeren totdat de bewerking is voltooid.

De asynchrone leesbewerking moet worden voltooid door de methode aan te EndWrite roepen. Normaal gesproken wordt de methode aangeroepen door de asyncCallback gemachtigde. Zie Synchrone methoden asynchroon aanroepen voor gedetailleerde informatie over het gebruik van het asynchrone programmeermodel

De NegotiateStream klasse biedt geen ondersteuning voor meerdere gelijktijdige schrijfbewerkingen. Als u een schrijfbewerking probeert te starten terwijl een andere schrijfbewerking al wordt uitgevoerd in dezelfde stream, wordt er een NotSupportedException uitzondering gegenereerd.

U kunt deze methode pas aanroepen als u bent geverifieerd. Als u wilt verifiëren, roept u een van de AuthenticateAsClientmethoden , , AuthenticateAsClientAsync, AuthenticateAsServerAsyncBeginAuthenticateAsClientAuthenticateAsServerof BeginAuthenticateAsServer methoden aan.

Van toepassing op