Freigeben über


NetworkStream.BeginWrite-Methode

Beginnt einen asynchronen Schreibvorgang in einen Stream.

Namespace: System.Net.Sockets
Assembly: System (in system.dll)

Syntax

'Declaration
Public Overrides Function BeginWrite ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
'Usage
Dim instance As NetworkStream
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginWrite(buffer, offset, size, callback, state)
public override IAsyncResult BeginWrite (
    byte[] buffer,
    int offset,
    int size,
    AsyncCallback callback,
    Object state
)
public:
virtual IAsyncResult^ BeginWrite (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    AsyncCallback^ callback, 
    Object^ state
) override
public IAsyncResult BeginWrite (
    byte[] buffer, 
    int offset, 
    int size, 
    AsyncCallback callback, 
    Object state
)
public override function BeginWrite (
    buffer : byte[], 
    offset : int, 
    size : int, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

Parameter

  • buffer
    Ein Array vom Typ Byte, das die Daten enthält, die in den NetworkStream geschrieben werden sollen.
  • offset
    Die Position im buffer, an der mit dem Senden der Daten begonnen werden soll.
  • size
    Die Anzahl der Bytes, die in den NetworkStream geschrieben werden sollen.
  • callback
    Der AsyncCallback-Delegat, der nach Abschluss von BeginWrite ausgeführt wird.
  • state
    Ein Objekt, das zusätzliche, benutzerdefinierte Daten enthält.

Rückgabewert

Ein IAsyncResult, das den asynchronen Aufruf darstellt.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

buffer ist NULL (Nothing in Visual Basic).

ArgumentOutOfRangeException

offset ist kleiner als 0.

- oder -

offset ist größer als die Länge von buffer.

- oder -

size ist kleiner als 0.

- oder -

size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.

IOException

Der zugrunde liegende Socket wird geschlossen.

- oder -

Beim Schreiben in das Netzwerk ist ein Fehler aufgetreten.

– oder –

Fehler beim Zugriff auf den Socket. Weitere Informationen finden Sie im Abschnitt Hinweise.

ObjectDisposedException

Der NetworkStream ist geschlossen.

Hinweise

Die BeginWrite-Methode beginnt einen asynchronen Sendevorgang an den Remotehost. Mit einem Aufruf der BeginWrite-Methode können Sie Daten in einem eigenen Ausführungsthread senden.

Sie müssen eine Rückrufmethode erstellen, die den AsyncCallback-Delegaten implementiert, und deren Namen an die BeginWrite-Methode übergeben. Der state-Parameter muss zumindest den NetworkStream enthalten. Wenn für den Rückruf mehr Informationen benötigt werden, können Sie eine kleine Klasse oder Struktur erstellen, die die NetworkStream-Informationen und die weiteren erforderlichen Informationen enthält. Übergeben Sie die Struktur oder Klasseninstanz im state-Parameter an die BeginWrite-Methode.

Die Rückrufmethode sollte die EndWrite-Methode implementieren. Bei einem Aufruf von BeginWrite durch die Anwendung verwendet das System einen eigenen Thread zum Ausführen der angegebenen Rückrufmethode und blockiert EndWrite, bis der NetworkStream die angeforderte Anzahl von Bytes sendet oder eine Ausnahme auslöst. Wenn der ursprüngliche Thread blockiert werden soll, nachdem die BeginWrite-Methode aufgerufen wurde, verwenden Sie die WaitOne-Methode. Rufen Sie Set in der Rückrufmethode auf, wenn der ursprüngliche Thread weiter ausgeführt werden soll. Weitere Informationen über das Verfassen von Rückrufmethoden finden Sie unter Beispiel zu Callbacks.

Hinweis

Wenn Sie eine IOException erhalten, überprüfen Sie die InnerException-Eigenschaft, um zu bestimmen, ob die Ausnahme von einer SocketException verursacht wurde. Verwenden Sie in diesem Fall die ErrorCode-Eigenschaft, um den spezifischen Fehlercode abzurufen. In MSDN finden Sie in der Dokumentation zu API-Fehlercodes unter Windows Sockets, Version 2, eine ausführliche Beschreibung des Fehlers.

Beispiel

Im folgenden Codebeispiel wird BeginWrite verwendet, um Daten asynchron in einen Netzwerkstream zu schreiben. Die myWriteCallBack-Methode implementiert den AsyncCallback-Delegaten und wird vom System aufgerufen, wenn BeginWrite beendet wird.

' Check to see if this NetworkStream is writable.
If myNetworkStream.CanWrite Then
   
   Dim myWriteBuffer As Byte() = Encoding.ASCII.GetBytes("Are you receiving this message?")
   myNetworkStream.BeginWrite(myWriteBuffer, 0, myWriteBuffer.Length, New AsyncCallback(AddressOf NetworkStream_ASync_Send_Receive.myWriteCallBack), myNetworkStream)
   allDone.WaitOne()
Else
   Console.WriteLine("Sorry.  You cannot write to this NetworkStream.")
End If
           
// Check to see if this NetworkStream is writable.
if (myNetworkStream.CanWrite){
   
     byte[] myWriteBuffer = Encoding.ASCII.GetBytes("Are you receiving this message?");
     myNetworkStream.BeginWrite(myWriteBuffer, 0, myWriteBuffer.Length, 
                                                  new AsyncCallback(NetworkStream_ASync_Send_Receive.myWriteCallBack), 
                                                  myNetworkStream);
     allDone.WaitOne();
}
else{
     Console.WriteLine("Sorry.  You cannot write to this NetworkStream.");  
}
           
// Check to see if this NetworkStream is writable.
if ( myNetworkStream->CanWrite )
{
   array<Byte>^myWriteBuffer = Encoding::ASCII->GetBytes( "Are you receiving this message?" );
   myNetworkStream->BeginWrite( myWriteBuffer, 0, myWriteBuffer->Length, gcnew AsyncCallback( &MyNetworkStreamClass::myWriteCallBack ), myNetworkStream );
   allDone->WaitOne();
}
else
{
   Console::WriteLine( "Sorry.  You cannot write to this NetworkStream." );
}
// Check to see if this NetworkStream is writable.
if (myNetworkStream.get_CanWrite()) {
    ubyte myWriteBuffer[] = Encoding.get_ASCII().
        GetBytes("Are you receiving this message?");
    myNetworkStream.BeginWrite(myWriteBuffer, 0,
        myWriteBuffer.get_Length(), 
        new AsyncCallback(NetworkStreamASyncSendReceive.
        MyWriteCallBack), myNetworkStream);
    allDone.WaitOne();
}
else {
    Console.WriteLine("Sorry.  You cannot write to this "
        + "NetworkStream.");
}

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

NetworkStream-Klasse
NetworkStream-Member
System.Net.Sockets-Namespace
EndWrite