Sockets: asynchrone Verarbeitung abbrechen

05/03/2008 - 11:42 von Sebastian Schwaiger | Report spam
Grüß euch,

folgendes Problem:

Ich betreibe meine Sockets asynchron, also mit BeginXXX und EndXXX.

Wenn ich den Socket nun schließe per Socket.Close() wird EndReceive
aufgerufen, was nun eine ObjectDisposedException auslöst.
Kann ich die Verarbeitung der asynchronen Methoden irgendwie abbrechen
beim Schließen des Sockets?

Lg Wasti
 

Lesen sie die antworten

#1 Alexander Gnauck
05/03/2008 - 12:40 | Warnen spam
Sebastian Schwaiger schrieb:

Wenn ich den Socket nun schließe per Socket.Close() wird EndReceive
aufgerufen, was nun eine ObjectDisposedException auslöst.
Kann ich die Verarbeitung der asynchronen Methoden irgendwie abbrechen
beim Schließen des Sockets?



das ist normal. EndReceive sollte dir aber in diesem Fall 0 Bytes zurück
liefern. Auf wenn die andere Seite den Socket schließt bekommst du ein
Receive Event.

hier ein vereinfachter Ausschnitt aus einem meiner Codes.

private void EndReceive(IAsyncResult ar)
{
int nBytes;
nBytes = m_NetworkStream.EndRead(ar);
if( nBytes > 0 )
{
// Daten empfangen
}
else
{
// Disconnect
}
}



Gruß
Alex

Ähnliche fragen