Hallo zusammen,
ich habe nach vielen Nächten miitlerweile scheinbar nur noch Leere an der Stelle wo sonst Hirn sitzen sollte und finde für mein Problem keine Lösung.
Ich starte einen Thread, in dem eine Socketverbindung aufgebaut wird. Anschließend wartet der Thread mit einem Loop auf neu empfangene Daten aus der Verbindung. Dabei geht die CPU uslastung auf 99% hoch, wobei das wohl aus dem Loop kommen muss. Jetzt gibt es aber tausende Programme die an einer Socketverbindung auf einen Empfang warten und die CPU Auslastung dabei nicht ans Limit treiben. Also mache ich etwas falsch, aber was?
Mein Code sieht wie folgt aus:
Für mich lautet nun die Frage des Tages: "Wie bekomme ich einen permanenten Socket.receive hin, ohne das die CPU Auslastung explodiert?"
Danke vorab...
nopi
ich habe nach vielen Nächten miitlerweile scheinbar nur noch Leere an der Stelle wo sonst Hirn sitzen sollte und finde für mein Problem keine Lösung.
Ich starte einen Thread, in dem eine Socketverbindung aufgebaut wird. Anschließend wartet der Thread mit einem Loop auf neu empfangene Daten aus der Verbindung. Dabei geht die CPU uslastung auf 99% hoch, wobei das wohl aus dem Loop kommen muss. Jetzt gibt es aber tausende Programme die an einer Socketverbindung auf einen Empfang warten und die CPU Auslastung dabei nicht ans Limit treiben. Also mache ich etwas falsch, aber was?
Mein Code sieht wie folgt aus:
VB.NET-Quellcode
- Do Until Beenden
- Try
- 'Prüfen ob Verbindung connected und Daten voranden
- If (Socket.Connected And Socket.Available > 0) Then
- Dim Receive(1024) As Byte
- Dim BytesFromServer As Int32
- BytesFromServer = Socket.Receive(Receive)
- Receive_String = (Encoding.ASCII.GetString(Receive, 0, BytesFromServer))
- 'Empfangene Daten in Logfile schreiben
- LogfileEintragText = Receive_String
- LogfileEintrag()
- End If
- 'Fehlerbehandlung, wenn Socket-Verbindung ein Problem feststellt wird hier abgebrochen
- Catch e As SocketException
- Catch e As Exception
- End Try
- Loop
Für mich lautet nun die Frage des Tages: "Wie bekomme ich einen permanenten Socket.receive hin, ohne das die CPU Auslastung explodiert?"
Danke vorab...
nopi