Synchroner Timer Problemstellung

  • VB.NET

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

    Synchroner Timer Problemstellung

    Huhu,

    ich habe ein neues Problem:

    Ich führe simple Berechnungen innerhalb eines Timers mittels eines Buttons aus:

    VB.NET-Quellcode

    1. Dim phase as integer
    2. Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
    3. phase = 1
    4. Timer9.Enabled = True
    5. Me.close
    6. End Sub
    7. Private Sub Timer9_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer9.Tick
    8. If (phase = 1) Then
    9. Timer8.enabled = true
    10. ''''''
    11. If (phase = 2) Then
    12. ''''''''
    13. Me.close()
    14. End If
    15. phase += 1
    16. End Sub


    Leider schließt sich das Programm unverzüglich, nachdem ich auf das Button klicke und wartet nicht ab, bis Timer8 quasi durchgelaufen ist! Intervall beträgt mindestens 1000 ms! Wie kann ich dieses Problem lösen? Mit bestem Gruß
    Vinegar

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Semiconductor“ ()

    Button_19? Timer_9? was tust du? wofürbrauchst du so viele (vermutlich) System.Windows.Forms.Timer?
    Du wirst dir wohl oder übel mal die Timervarianten
    System.Threading.Timer oder
    System.Timers.Timer
    ansehen müssen, da diese in eigenen Threads laufen, und bei einem Form.Close() diese Threads noch auslaufen dürfen.

    Aber was berechnet man, wenn man eine Form schließt?
    Berechnen beim Schließen ist nur quasi, jetzt weiß ich, dass definitiv was passiert.

    Dass da so viele Timer sind, hat nichts mit meinem Programm zu tun. Die anderen Timer dienten nur zum Experimentieren, quasi ein Experimentierfeld :)

    Das Problem ist, dass nicht phasenweise eine Abfrage gemacht wird und das natürlich im Sekundentakt. Daher sieht es komisch aus.

    EDIT:

    Das ist etwas ziemlich blöd geschrieben, aber hier nochmals in allgemeiner Form, was bei mir Probleme bereitete:

    VB.NET-Quellcode

    1. Dim phase = 0
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. phase = 1
    4. Me.Text = phase
    5. Timer1.Enabled = True
    6. End Sub
    7. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    8. If (phase = 3) Then
    9. phase += 1
    10. Me.Text = phase
    11. Timer1.Enabled = False
    12. End If
    13. If (phase = 2) Then
    14. phase += 1
    15. Me.Text = phase
    16. End If
    17. If (phase = 1) Then
    18. phase += 1
    19. Me.Text = phase
    20. End If
    21. End Sub



    Beiträge zusammengefügt. ~Thunderbolt

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

    Semiconductor schrieb:

    Das ist etwas ziemlich blöd geschrieben, aber
    ich hab noch nicht gelernt, was Option Strict On bedeutet.
    Was soll Dein Programm eigentlich tun?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!