Anwendung hängt während Timer-Tick

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Anwendung hängt während Timer-Tick

    Guten Morgen,

    ich habe ein Problem, bei dem ich einfach zu keiner Lösung komme.

    Es geht um dieses Stück Code:


    Währen diesem Tick hängt das komplette Programm und da der Tick fast immer läuft, hängt es im Prinzip durchgehend.
    Die anderen Timer die simultan laufen machen zwar das was sie sollen, aber es muss ja möglich sein das das Programm nicht hängt.

    Vielleicht kann mir ja jemand behilflich sein.
    Ich habe auch mal mit eine Backgroundworker rumgetestet, das hat aber nicht so ganz geklappt.

    Gruß

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

    erste frage: warum läuft dein timer asynchron?
    zweite frage: du hast es mit nem backgroundworker veruscht, aber es läuft nich so wie du dir das vorstellts. wie stellst du dir das denn vor?

    dein problem wird die for-schleife sein. wenn du die in nen backgroundworker auslagerst könntest wieder en bissl performance geben.

    affrop schrieb:

    erste frage: warum läuft dein timer asynchron?

    "Async" im Header einer Methode bedeutet NICHT, dass die Methode asynchron läuft. Es bedeutet lediglich, dass man in der Methode "Await" verwenden DARF. Dieses Konstrukt war/ist nötig, da "Await" ein neu eingeführtes Schlüsselwort ist und "alter" Code ansonsten nicht kompilieren würde:

    Dim Await = 1 =>Problem

    LaBomba schrieb:

    System.Threading.Thread.Sleep(350)
    Da du sagst, dass das gesamte Programm hängt, wird der Tick wohl im Hauptthread laufen.
    Einfaches Beispiel :
    Wenn du nun diesen Sleep, pro Untereintrag eines Eintrages einer Liste mit N Einträgen aufrufst, dann ergibt dass eine Wartezeit von 350 ms *N Einträge * M Untereinträge
    Bei allein schon 10 Einträgen der Liste mit jeweils 2 Untereinträgen, gibt dass dann 350ms * 10 * 2, was dementsprechend bereits 7 Sekunden Wartezeit sind, wenn wir von einer unendlich schnellen Ausführungszeit Sprechen.
    Dann ist noch die Frage, wie lange auf andere Dinge gewartet werden muss.

    Tipp steht eins darüber, pack es in einen BackgroundWorker... eigenen Thread... was auch immer, jedenfalls nicht im Hauptthread, sonst kann dieser nur einfrieren.