Performance probleme ; Problem beim Beenden

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von noname.

    Performance probleme ; Problem beim Beenden

    Hallo ich bin noch ein kleiner Anfänger und habe ein kleines Programm geschrieben, welches den Rechner zu einer bestimmten Zeit herunterfahren soll.

    Ich habe 2 Probleme:

    1. Sobald ich die funtion des Programms aktiviere (also nicht sobald ic es starte, sondern auf den startbutton drücke)
    schnellt die CDP und Ram Auslastung auf über 50% hoch!!!

    2. ICh denke, dass ich einen Button programmiert habe, welcher zum abbruch der Timerschleife führen sollte. es tut es aber nciht. ICh bekomme eine Fehlermeldung und das PRogramm sowie die CPU-Auslastung bleiben gleich hoch.

    Folgend ist der code!!! ICh hoffe mir kann da jemand helfen!!!!!
    DANKE

    Programmablauf:
    Timerinterval auf 30 sek.

    alle 30 sek. einlesen PCzeit ; Einlesen Textbox; Vergleichen; Aktion ausführen
    Button2: Timer beenden

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Timer1.Interval = 30000 ' Tickereignis alle 30 Sekunden
    4. Timer1.Start()
    5. End Sub
    6. Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    7. Dim Zeit As String
    8. Dim ZeitPC As String
    9. Zeit = TextBox1.Text
    10. ZeitPC = System.DateTime.Now.ToShortTimeString()
    11. Label6.Text = "TimeDown ist aktiviert!!!!"
    12. If Zeit <= ZeitPC Then
    13. System.Diagnostics.Process.Start("shutdown", "-s")
    14. ElseIf Zeit < ZeitPC Then
    15. Exit Sub
    16. End If
    17. End Sub
    18. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    19. Timer1.Stop()
    20. Label6.Text = "TimeDown ist deaktiviert"
    21. End Sub
    22. End Class
    hai !

    probiers das aus :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Timer1.Enabled = True
    4. Timer1.Interval = 30000 ' Tickereignis alle 30 Sekunden
    5. End Sub
    6. Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    7. Dim Zeit As String
    8. Dim ZeitPC As String
    9. Zeit = TextBox1.Text
    10. ZeitPC = System.DateTime.Now.ToShortTimeString()
    11. Label6.Text = "TimeDown ist aktiviert!!!!"
    12. If Zeit = ZeitPC Then
    13. System.Diagnostics.Process.Start("shutdown", "-s")
    14. ElseIf Zeit <> ZeitPC Then
    15. Timer1.Enabled =False
    16. Exit Sub
    17. End If
    18. End Sub
    19. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    20. Timer1.Enabled =False
    21. Label6.Text = "TimeDown ist deaktiviert"
    22. End Sub



    Mfg Alex
    Hallo, ich habe den Code so überarbeitet wie vorgeschlagen. Aber jetzt FUNKTIONIERT es nicht mehr. Die CPU Auslastung ist ok (0) aber das programm fährt den rechner jetzt nicht mehr runter.

    1. was bedeztet das enabled = true / = false
    2. warum funktioniert der code jetzt nicht mehr. Wie kann ich das abändern.

    Danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Philipp“ ()

    hallo philip,

    VB.NET-Quellcode

    1. Timer.Start
    2. Timer.Enabled = True

    ist das gleiche
    genau wie

    VB.NET-Quellcode

    1. Timer.Stop
    2. Timer.Enabled = False


    ich persönlich verwende start und stop - ist für mich irgendwie klarer.

    gruss

    mikeb69

    VB.NET-Quellcode

    1. If Zeit = ZeitPC Then
    2. System.Diagnostics.Process.Start("shutdown", "-s")
    3. ElseIf Zeit <> ZeitPC Then
    4. Timer1.Enabled =False
    5. Exit Sub
    6. End If


    Da sind aber viele Fehler drin!

    Der Computer wird nur heruntergefahren wenn die Zeit GENAU auf dem angegeben Zeitpunkt liegt, da der Timer nur alle 30 Sekunden tickt ist das ein Glückspiel.

    Dann wird der Timer ausgeschaltet wenn die Zeit ungleich des Zeitpunktes ist. Der Sinn davon ist fraglich, da der Timer alle 30 Sekunden ticken soll, er aber nach dem ersten Mal einfach ausgeht.

    So würde es im Timer schon reichen:

    VB.NET-Quellcode

    1. If Zeit <= ZeitPC Then System.Diagnostics.Process.Start("shutdown", "-s")