Probleme mit Progressbar

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von matthias40.

    Probleme mit Progressbar

    Hi alle zusammen!

    Ich stehe vor einem Problem mit meinem ProgressBar. Kurz zur Erklärung:
    Ich hab eine ObservableCollection als Datasource für ein Datagridview. Die Collection benötigt einige Zeit um befüllt zu werden und deshalb möchte ich eine Progressbar anzeigen.
    Die Form mit dem Progressbar wird zwar geöffnet aber die Progressbar nicht angezeigt. Hier mal mein Code soweit:

    Die Form mit dem Progressbar:

    VB.NET-Quellcode

    1. Public Class ProgressLoad
    2. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer.Tick
    3. PrgBar.Value += 1
    4. End Sub
    5. Private Sub ProgressLoad_Load(sender As Object, e As EventArgs) Handles Me.Load
    6. Timer.Interval = 1000
    7. With PrgBar
    8. .Style = ProgressBarStyle.Marquee
    9. .Minimum = 0
    10. .Maximum = 100
    11. .MarqueeAnimationSpeed = 30
    12. End With
    13. End Sub
    14. End Class


    Meine Form wo die Daten geladen werden und die Form ProgressLoad angezeigt werden sollte:

    VB.NET-Quellcode

    1. Private Async Sub FormDMS_Load(sender As Object, e As EventArgs) Handles Me.Load
    2. Cursor = Cursors.WaitCursor
    3. Await LoadDataGrid()
    4. DgVDMS.DataSource = DMSData.DMSListe
    5. DgVDMS.Refresh()
    6. ProgressLoad.Close()
    7. Cursor = Cursors.Default
    8. End Sub
    9. Public Async Function LoadDataGrid() As Task
    10. Await Task.Run(Sub()
    11. ProgressLoad.Show()
    12. DMSData.GetDMSListe()
    13. End Sub).ConfigureAwait(False)
    14. End Function


    Bin über jede Hilfe dankbar!
    Zum einen: Dein ProgressBar-Form wird in einem Nebentask aufgerufen und danach kommt gleich die (vermutlich) schwere Arbeit mit DMSData.GetDMSListe(). Also ist der Computer schwer damit beschäftigt, DMSData.GetDMSListe() abzuarbeiten und hat für das ProgressBarForm keine Zeit. Ist ja im selben Task.
    Zum anderen: Instanziiere besser mal ProgressLoad, siehe Warum »Form1.Show« und Co. einem irgendwann ins Bein schießen

    ##########

    Ach ja, EdR hatte da mal was gebastelt: IsBusy-Dialog
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Besten Dank!

    Der IsBusy-Dialog funktioniert wunderbar!

    EDIT: Hab den SizeMode auf AllCells gehabt, den Tipp hab ich in einem Beitrag von dir gefunden:
    vb-paradise.de/index.php/Threa…ostID=1157291#post1157291
    Nachdem ich das umgestellt habe, erübrigt sich auch die ProgressBar da es jetzt wunderbar und schnell lädt

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