Timer bei WPF

  • WPF

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von rabe0577.

    Timer bei WPF

    Hallo,
    wie kann ich einen Timer hier machen. Weil die Timer funktion gibtes ja nicht. Also bei mir und bei einem bekanten ist die timer funktion immer ber wpf nicht da.

    Da kann man sich ja einen selber schreiben. Nur wie kan man das am besten machen. Ich habe schon dieses hier dazu rausgefunden: msdn.microsoft.com/de-de/libra…ding.dispatchertimer.aspx

    Nur ich verstehe den aufbau nicht so richtig. Ich meine ich habe mal gelesen oder gesehen das es eine Pausen funktion gibt. Damit könnte man sich ja auch einen timer basteln.
    Was willst du jetzt? Eine Pause-Funktion? In der WPF taucht der Timer sinnvollerweise nicht mehr in der Komponentenliste auf, und du solltest mit ihm auch keinerlei UI-Sachen machen(!)
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

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

    Wenn man mit WPF anfängt, steht man in der Versuchung, alles einfach zu übernehmen, also z.B. ein aufblinkender Text mit nem Timer zu machen oder sowas. Da bietet die WPF Alternativen, was das angeht (Storyboards, Animationen).

    Allerdings weiß ich immer noch nicht, worauf du jetzt hinauswillst. Dein Eingangspost ist verwirrend.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @Lukas Ich brauche einfach einen Timer der jede sekunde einen befehl ausfürt.

    Ich bin jetzt so weit gekommen:

    VB.NET-Quellcode

    1. Dim timer As System.Windows.Threading.DispatcherTimer


    VB.NET-Quellcode

    1. If Not timer Is Nothing Then
    2. ticklog_text.Text &= ("Ticker läuft bereits" + vbNewLine)
    3. Else
    4. timer = New System.Windows.Threading.DispatcherTimer
    5. ticklog_text.Text &= ("Starte Ticker ..." + vbNewLine)
    6. timer.Interval = New TimeSpan(0, 0, 0, 5, 0)
    7. AddHandler timer.Tick, AddressOf timer_Tick
    8. timer.Start()
    9. End If


    Weiter komme ich mit dem Text irgendwie nicht.
    Auf der Seite wird der Code Zeilenweise erklärt.
    Wo liegt dein Problem?
    Was möchtest du erreichen? btw. dein C&P ist nicht vollständig.
    So wie ich das verstanden habe möchtest du einen Timer erstellen, mit dem Interval von einer Sekunde, der irgendwas mit einem Server log macht.
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." Albert Einstein

    hellmaster159 schrieb:


    Was möchtest du erreichen?

    Hätten wir dann. Jetzt zu der eigentlichen Sache:

    hellmaster159 schrieb:


    Wo liegt dein Problem?

    // Ab welcher Zeile weißt du nicht mehr weiter :pinch:
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." Albert Einstein

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

    Hi,

    so hast du deinen Timer

    VB.NET-Quellcode

    1. Class MainWindow
    2. Private WithEvents T As New System.Windows.Threading.DispatcherTimer With {.Interval = New TimeSpan(0, 0, 1), .IsEnabled = False}
    3. Private Sub T_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles T.Tick
    4. Console.Beep()
    5. End Sub
    6. Private Sub MainWindow_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Me.MouseDown
    7. If Not T.IsEnabled Then
    8. T.IsEnabled = True
    9. End If
    10. End Sub
    11. End Class


    mfG

    Derfuhr
    Ich wollt ebend schon fragen was ich da schreiben muss, aber dan habe ich mal nachgedacht was ihr so esagt habt. Und habe es selber probiert.

    Also keydown event geht. Ich habe jetzt dieses hier benutzt:

    VB.NET-Quellcode

    1. Private WithEvents T As New System.Windows.Threading.DispatcherTimer With {.Interval = New TimeSpan(0, 0, 1), .IsEnabled = False}
    2. Private Sub T_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles T.Tick
    3. Console.Beep()
    4. End Sub
    5. Private Sub MainWindow_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles Me.KeyDown
    6. If Not T.IsEnabled Then
    7. T.IsEnabled = True
    8. End If
    9. End Sub


    Da ich es jetzt aber sofort starten will, könnte ich das hier in das loard event rein schreiben:

    VB.NET-Quellcode

    1. If Not T.IsEnabled Then
    2. T.IsEnabled = True
    3. End If
    wie und dan startet es sofort?

    Dan könnte ich das ja einfach so schreiben:

    VB.NET-Quellcode

    1. Private WithEvents T As New System.Windows.Threading.DispatcherTimer With {.Interval = New TimeSpan(0, 0, 1), .IsEnabled = True}
    2. Private Sub T_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles T.Tick
    3. Console.Beep()
    4. End Sub
    Hast ja recht...

    Edit:

    Wie kann ich den auch die Milli sekunden angeben? Ich wollte vieleicht das jede halbe sekunde der befehl ausgeführt wird. So wie ich es geslesn habe funktioniert es nicht. Ich habe mal noch ", 0" dahinter gesetzt und dan 500 hingeschrieben aber das funktioniert nicht. Das nimmt der auch als sekudnden.

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