NegotiateStream.BeginWrite Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Påbörjar en asynkron skrivåtgärd som skriver Bytes från den angivna bufferten till dataströmmen.
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
Parametrar
- offset
- Int32
Den nollbaserade plats buffer där byte som ska skrivas till strömmen ska börja läsas.
- asyncCallback
- AsyncCallback
Ett AsyncCallback ombud som refererar till metoden för att anropa när skrivåtgärden är klar.
- asyncState
- Object
Ett användardefinierat objekt som innehåller information om skrivåtgärden. Det här objektet skickas till ombudet asyncCallback när åtgärden är klar.
Returer
Ett IAsyncResult objekt som anger status för den asynkrona åtgärden.
Undantag
buffer är null.
offset är mindre än 0.
-eller-
offset är större än längden på buffer.
-eller-
offset plusantalet är större än längden på buffer.
Skrivåtgärden misslyckades.
-eller-
Kryptering används, men det gick inte att kryptera data.
Det pågår redan en skrivåtgärd.
Det här objektet har stängts.
Autentiseringen har inte inträffat.
Exempel
I följande exempel visas hur du påbörjar en asynkron skrivåtgärd.
// 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)
Följande metod anropas när åtgärden slutförs.
' 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
Kommentarer
Om kryptering, signering eller kryptering och signering är aktiverade läser den här metoden data från buffert, krypterar, signerar eller krypterar och signerar dem och överför dem med hjälp av den underliggande strömmen. Om inga säkerhetstjänster som datakryptering eller signering används startar den här metoden en asynkron skrivåtgärd på den underliggande strömmen.
Den här metoden är asynkron och blockerar inte när åtgärden är klar. Om du vill blockera tills åtgärden har slutförts använder du Read metoden .
Den asynkrona läsåtgärden EndWrite måste slutföras genom att anropa metoden. Metoden anropas vanligtvis av ombudet asyncCallback . Detaljerad information om hur du använder den asynkrona programmeringsmodellen finns i Anropa synkrona metoder asynkront
Klassen NegotiateStream stöder inte flera samtidiga skrivåtgärder. Om du försöker starta en skrivåtgärd medan en annan skrivåtgärd redan körs på samma ström genereras ett NotSupportedException undantag.
Du kan inte anropa den här metoden förrän du har autentiserats. Om du vill autentisera AuthenticateAsClientanropar du någon av metoderna , AuthenticateAsClientAsync, BeginAuthenticateAsClient, AuthenticateAsServer, AuthenticateAsServerAsynceller BeginAuthenticateAsServer .