vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Programm reagiert nichtmehr 
Autor: Marty**
Datum: 02.05.21 14:40

Hallo,

ich habe mir ein kleines Programm gebastelt, das jede Sekunde über einen Timer den Wert vom Stromzähler übernimmt. Leider reagiert das Programm nach kurzer Zeit nicht mehr. (keine Rückmeldung)

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 
        Dim wc As New Net.WebClient
        Dim s As String = wc.DownloadString( _
          "http://192.168.178.82//middleware.php/data/6bc4bfc0-a668-11eb-b9cd-" & _
          "b02045b5107.txt?from=now")
        Label1.Text = s
        s = Nothing
 
 
        Dim x As String = PictureBox1.Width \ 2 - Label1.Width \ 2
 
 
        Label1.Location = New Point(x, 120)
 
        If Label1.Text >= "0" Then
            Label1.ForeColor = Color.Red
        Else
            Label1.ForeColor = Color.Green
        End If
 
    End Sub
hat jemand eine Idee warum das so ist ?

MfG
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm reagiert nichtmehr 
Autor: -Franky-
Datum: 02.05.21 17:29

Hi

Du erstellst bei jedem TimerTick einen neuen WebClient. Ich sehe hier kein wc.Dispose nachdem der WebClient nicht mehr benötigt wird. Alternativ nimmst einen Using/End Using-Block dafür. s = Nothing? Wenn dann s = String.Empty. x as String? sollte wohl x as Interger sein. Schalte mal Option Strict und Option Explicit auf On damit Du auch entsprechende Fehler angezeigt bekommst. Ein Label sollte nur zur Anzeige dienen. Deswegen verwende s bei If Label1.Text >= "0" Then anstatt Label1.txt und Du überprüfst nicht ob überhaupt was in s steht das Du auswerten kannst. Ich vermute das in s dann eine Zahl steht? Dann müsstest für die Auswertung s auch in eine Zahl konvertieren (evtl vorher noch mit Integer.TryParse checken ob sich der String auch in eine Zahl konvertieren lässt). Evtl ist auch 1 Sekunde zu kurz. Hast Du es schon mal mit 5 Sekunden probiert?

Hab Deinen Code etwas abgeändert. Im groben sollte es in etwa so aussehen:
Option Strict On
Option Explicit On
 
Public Class Form1
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles _
      Timer1.Tick
 
        Dim strRet As String = String.Empty
 
        Using wc As New Net.WebClient
 
            strRet = wc.DownloadString( _
              "http://192.168.178.82//middleware.php/data/6bc4bfc0-a668-11eb-b" & _
              "cd-" &
                                       "b02045b5107.txt?from=now")
 
        End Using
 
        If strRet <> String.Empty Then
 
            Label1.Text = strRet
            Label1.Location = New Point((PictureBox1.Width \ 2) - (Label1.Width _
              \ 2), 120)
 
            If Integer.Parse(strRet) >= 0 Then
                Label1.ForeColor = Color.Red
            Else
                Label1.ForeColor = Color.Green
            End If
 
        End If
 
    End Sub
 
End Class

Mit freundlichen Grüßen
-Franky-

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2021 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel