jede sekunde eine Sub ausfüheren

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Fakiz.

    jede sekunde eine Sub ausfüheren

    Hi,
    möchte wie der Titel schon sagt jede Sekunde eine Sub/Funktion ausführen, würde das gern mit nem Timer machen, nicht mit dieser

    VB.NET-Quellcode

    1. thread.sleep(1000)
    Methode ;)

    Man müsste da also bestimmt immer abfragen ob der timer schon die 1000 erreicht hat, aber wie man das syntaktisch aufschreibt weiß ich leider nicht...

    MrSchabernack
    Was hast du dagegen, es mit dieser Methode zu machen? Das ist sauberer, als mit nem Timer.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:


    Was hast du dagegen, es mit dieser Methode zu machen? Das ist sauberer, als mit nem Timer.


    Mit Sicherheit nicht.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ok, sagen wir einfacher :D. Aber die Frage ist halt, was willst du damit erreichen bzw was ist dein Ziel.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    MrSchabernack schrieb:

    Man müsste da also bestimmt immer abfragen ob der timer schon die 1000 erreicht hat
    Nicht ganz, der Timer funktioniert etwas anders.

    Schau dir mal diese Seite an: msdn.microsoft.com/de-de/libra…imer.tick%28VS.90%29.aspx
    Eine bessere Seite hab ich gerade nicht zur Hand ^^

    @Trade: Einfacher? Nicht wirklich. Beides dauert nur Sekunden und gehört zu den Grundlagen.
    Vor allem aber sollte man wissen, das man .NET Anwendungen nicht einfriert (Ausgenommen in ganz speziellen Fällen).
    Wie @ThuCommix: bereits gesagt hat Timer auf 1 Sekunde stellen (.Interval = 1000) ( sind nämlich ms).
    Timer entweder gleich im Designer auf Enabled = True setzen oder im Code per .Enabled = True oder mit der Methode .Start().

    Da gibt es dann ein Tick-Event des Timers, welches genau alle 1000 ms feuert und den Code darin ausführt (nix mit überprüfen auf 1000).

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    ok Danke,

    das müsste funktionieren, hätte noch eine Frage und zwar ist mein Ziel mit dieser Methode jede Sekunde eine Auswertung vom BubbleSort in eine LstB auszugeben.
    Die Abfrage ob nun mein jetziges Element größer ist als das nächste im Array, soll in der Funktion die theoretisch aufgerufen wird wenn 1 Sekunde um ist, ausgewertet werden. Leider ist dann aber der Index des Arrays, beim letzten Element, außerhalb des definierten Bereichs.
    Könnte mir evtl. jemand einen Lösungsvorschlag geben um die Elemente in der Funktion zu vergleichen ?

    Code:

    VB.NET-Quellcode

    1. private void btnTimer_Click(object sender, EventArgs e)
    2. {
    3. System.Timers.Timer tt = new System.Timers.Timer();
    4. int iSwap = 0;
    5. for (iT1 = 0; iT1 < BubbleSortT.Length; iT1++)
    6. {
    7. for (iT2 = 0; iT2 < BubbleSortT.Length - 1; iT2++)
    8. {
    9. tt.Elapsed += new System.Timers.ElapsedEventHandler(tt_Elapsed);
    10. tt.Interval = 1000;
    11. tt.Enabled = true;
    12. //GC.KeepAlive(tt);
    13. }
    14. }
    15. }
    16. void tt_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    17. {
    18. int iSwap = 0;
    19. if (BubbleSortT[iT2] > BubbleSortT[iT2 + 1])
    20. {
    21. iSwap = BubbleSortT[iT2];
    22. BubbleSortT[iT2] = BubbleSortT[iT2 + 1];
    23. BubbleSortT[iT2 + 1] = iSwap;
    24. lstB.Items.Add(BubbleSortT[0] + " " + BubbleSortT[1] + " " + BubbleSortT[2] + " " + BubbleSortT[3] + " " + BubbleSortT[4]);
    25. }
    26. }


    Grüße MrSchabernack