Ich habe mir im MSDN
dieses Snippet herangezogen, um meinen TcpClient zu implementieren. Ich bin mit meiner Anpassung schon sehr weit, verstehe aber nicht alles in diesem Snippet.
Zeile 26-31: Ich verstehe die verschiedenen Erläuterungen im MSDN nicht, wofür genau das "ManualResetEvent" gedacht ist. Im Zusammenspiel mit dem Snippet wird es mir leider auch nicht klar. Beim Studium von
"Visual C# 2008 – Das umfassende Handbuch - Delegates" wird dieser Typ in keinem Beispiel verwendet und trotzdem werden asynchrone Aufrufe in eigenen Threads möglich. Kann es mir bitte jemand in einer für Thread-Laien verständlichen Ausführung erläutern?
Vielen Dank.
Edit: Was ich mir bis jetzt zusammengereimt habe (und ich glaube ich bin schon nahe dran): Ein asynchroner Aufruf eröffnet einen neuen Thread. Dieser wird bspw. mit BeginnConnect() eröffnet. Nach BeginnConnect() weise ich genau darauf hin, das das ein bestimmtes ManualResetEvent warten soll bis es als "erledigt" markiert ist. Das passiert im Delegate, also der Callback-Methode (für genanntes Beispiel ist das ConnectCallback()).
Das im Handbuch ähnliches nicht vorkommt rührt meines Verständnisses daher, dass im Buch mehrere asynch. Requests nebeneinander arbeiten dürfen, während im Client das Senden nicht neben sondern nach dem Connect abgearbeitet werden muss, was mit dem ManualResetEvent realisiert wird.
Aber: Wenn das stimmt, wozu dann ein asynchroner Vorgang, wenn nach dem Starten doch wieder "der Code angehalten" wird?
Danke nochmal.