.NET's TcpClient: Datenempfang abwarten, ohne zu blockieren
hi ihr,
ich habe einen System.Net.Sockets.TcpClient als private member einer klasse. verbinden zum server und so weiter klappt alles soweit. nun möchte ich den TcpClient dazu veranlassen, permanent auf daten zu warten und bei empfang ein event auszulösen. das ganze sollte meine anwendung aber nicht blockieren, weshalb ja nur ein thread in frage kommt. und jetzt meine frage: wie erstelle ich einen thread, der den TcpClient die ganze zeit lang auf daten warten lässt, bei erfolgreichem versand ein event auslöst und dann weiter auf daten wartet, bis ich ihn beende? :) ich hoffe, dass ihr mir helfen könnt, denn in sachen .NET bin ich noch ganz grün :stupid: . danke schonmal, aenogym |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
mit .NET kenn ich mich jetzt net aus, aber im prinzip würde doch eine schleife reichen, die die Lines abholt und wenn was angekommen ist, das event auslöst und auch noch auf das beenden des threads reagiert
|
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
Zitat:
in c# geht das so einfach... :( (robert, du kennst dich doch sicher damit aus :stupid: ) aenogym |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
Hi,
du kannst die Methoden BeginRead/EndRead des NetworkStreams verwenden, den du von der Methode GetStream erhälst. Diese Methoden verwenden implizit Threads um ein asynchrones Lesen mit Rückruffunktion auszuführen. |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
Zitat:
Aber die gleichen Klassen, die du in C# genommen hättest, gibt es auch in D.Net... |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
erstmal danke an niko. BeginRead schaut gut aus :)
Zitat:
und dass es die gleichen klassen da gibt, ist mir schon klar. nur ich wüsste nicht, wie ich
Code:
in delphi umsetzen sollte :roll:
Thread myThread = new Thread(new ThreadStart(myMethod));
aber danke erstmal. ich werd .NET schon noch raffen, wenn ich endlich die Hhilfe zum laufen gebracht hab... aenogym |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
Zitat:
Delphi-Quellcode:
var Thread myThread;
.... myThread := Thread.Create(ThreadStart.Create(myMethod)); Zitat:
Denkt euch einfach, dass es keine Hilfe in D2005 gibt. (Die ist ja sowieso nicht integriert sondern schwirrt als loses Fenster durch die Gegend :wall: ) Start\Programme\.Net SDK\Doku Einfach nur da suchen... btw: Du wusstest wie du es in C# schreibst, aber so einfache Sachen kannst du nicht in Delphi? Bist du dir wirklich sicher, dass du weißt, wo du mehr Ahnung hast? *g* |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
Zitat:
und das mit der hilfe: jo, nachschauen im .NET SDK tu ich ja. nur das hilft mir eben herzlich wenig, wenn ich es in delphi nicht anzuwenden weiß (siehe obigen code). aber gut, bin halt Delphi.Win32 verwöhnt und muss mit der schönen neuen .NET-welt erstmal versuchen klarzukommen ;) aenogym |
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
ups... ThreadStart als Delegate wird doch in D.Net _anders_ behandelt.
Ich hab's nicht im Kopf. Für events muss man ja das selten "hübsche" Include(Event, Methode) nehmen. Mich würde nicht wundern, wenn dein Schnipsle so aussehen könnte:
Delphi-Quellcode:
Bin gerade zu gut gelaunt für D.Net, kann es also nicht testen... ;)
Thread.Create(@Methode)
|
Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie
ja, so kompiliert er das ohne zu murren. nur mit BeginRead komm ich noch nicht klar. Aber ich schaff das schon :)
aenogym |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz