Progressbar aktualisierung funktioniert nicht :-(

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von BattleMaker.

    Progressbar aktualisierung funktioniert nicht :-(

    Hi!

    Hab ein kleines Programm mit Visual Basic.Net geschrieben.

    Kurze beschreibung:

    Mit einer Call Anweisung wird eine Funktion aufgerufen welche sich durch loop solange wiederholt bis der gewünschte zustand erreicht ist.
    nun will ich parallel in meiner userform den status anzeigen lassen. *grrrrr*
    Leider wird die progressbar erst nach beenden der loop aktualisiert.

    Hab mit einem Timer versuchteine aktualisierung herbeizuführen ging leider nicht

    Auszug:

    button click im userform:

    AnzeigeStatus.Minimum = 1
    AnzeigeStatus.Maximum = 100
    AnzeigeStatus.Value = 10

    TimerTestAKTIV()
    TimerHandel()


    Anfahren.SitzSpeicher(PositionSitz) 'Sitzposition anfahren
    ----------------------
    Public Sub TimerTestAKTIV()

    Timer1.Interval = 4000
    Timer1.Enabled = True
    end
    --------------------
    Public Sub TimerHandel()

    AddHandler Timer1.Elapsed, AddressOf DOIT
    -------------------------
    End Sub
    Private Sub DOIT(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)

    MsgBox("1")
    Status()

    End Sub
    ------------------
    Private Sub Status()


    AnzeigeStatus.PerformStep()
    AnzeigeStatus.Show()


    End Sub

    Kann mir jemand bitte helfen? wäre echt saudringend :(

    Besten Dank schonmal, Gruß Venne
    Jo. DoEvents am besten in jede Schleife rein hauen *tipp*
    Und um den Prozessor zu schönen, solltest du die sleep-API auch noch rein geben.

    Wenn du so einfach die Schleife laufen lässt,wird die so oft (und schnell) durchlaufen wie der Prozessor es schafft (volle auslastung) wenn du sleep 100 rein gibts, wartet er jedes mal 1/10 sekunde. Die API-Dekleration hab ich jetzt nicht im Kopf aber bei .NET müsste es doch auch einen API-Viewer geben?!
    Um den aktuellen Thread für einen Moment anzuhalten - also "schlafen" lassen - sollte man besser folgendes verwenden:

    System.Threading.Thread.CurrentThread.Sleep(1000)

    Der obige Befehl lässt das Programm bzw. den aktuellen Thread für 1 Sekunde stoppen.


    MfG, BattleMaker