ich dieses Stück Code bin mit einer Verbindung zu einem Server zu verarbeiten und Daten vom ClientTcpClient und Network entsorgen Problem
using(var client = _listener.EndAcceptTcpClient(ar))
{
var clientStream = client.GetStream();
// Get the request message
Messages.ReceiveMessage(clientStream, msg => ProcessRequest(msg, clientStream));
}
Jetzt lesen, die ReceiveMessage Methode ruft BeginRead()
auf den Stream als Parameter übergeben , aber ich bekomme eine ObjectDisposedException.
Ich weiß, dass eine Lösung ist, stream.Dispose() aufzurufen, wenn ich den Stream nicht mehr brauche, aber ich suche wirklich nach einer Lösung, wo ich die using
-Klausel beibehalten kann.
Dank
ManualResetEvent implementiert IDisposable so mit diesem Muster sollte in einer using-Anweisung verpackt werden. – Joe
Dies "bricht" jedoch die asynchrone Verarbeitung der Daten, da Sie grundsätzlich blockieren, bis der asynchrone Prozess abgeschlossen ist. Das mag nicht in allen Situationen wünschenswert sein. –
Ich habe die Frage innerhalb der gegebenen Einschränkungen beantwortet. :-) Joe hat recht, wenn er() das ManualResetEvent verwendet. –