NegotiateStream.BeginWrite Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- offset
- Int32
De locatie buffer op basis van nul waarop bytes moeten worden gelezen die naar de stream moeten worden geschreven.
- 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.