Thread.Sleep -> Alternative?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von JackCimberly.

    Thread.Sleep -> Alternative?

    Hoi hoi VB-Gemeinde.

    Heute geht es mal um was Simples ;) .

    Ich habe ein Updater programmiert. Ist schon fertig.
    Nun möchte ich da noch so kleine Features einbauen.

    Was macht der Updater?

    1. Klar, Updater geöffnet (indem wird angezeigt, welcher Version derzeit genutzt wird).
    2. Button: 'Nach Updates suchen' (lädt eine *.ini* Datei vom Server)
    3. Vergleicht die Programmversion mit den Daten in der *.ini*-Datei.
    4. usw. ...

    Zwischen den Prozeduren möchte ich den Anwender darüber informieren, was der Updater macht.
    Dies habe ich wie folgt gelöst: [VB 2010] Wie bekomme ich meine Anwendung unten rechts ins infofeld?

    Nun geht das Ganze so schnell, dass die letzte Information im Systray steht (kein Update/Update vorhanden).

    Zwischendrin habe ich noch Infos, wie z.B.
    "Lade *.ini*-Datei vom Server. Bitte warten ..."
    "*.ini*-Datei erfolgreich geladen."
    "Führe nun den Versionscheck durch ..."
    usw.

    Nun möchte ich, dass diese auch angezeigt werden.

    Mit

    VB.NET-Quellcode

    1. Thread.Sleep(5000)

    ist auch keine Lösung. Da die Labels in der Systray-Form eingegraut sind - also kein Text erkennbar.
    Nur die letzte Meldung erscheint da, nachdem der Versionscheck abgeschlossen ist -> "kein Update/Update vorhanden".

    Idee? Tipp? ?(
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Mach alles in einem anderen Thread (das Warten, was du wolltest, auch), damit du den MainThread nicht blockierst.

    VB.NET-Quellcode

    1. Private Sub DasAllesWasDuMachenWillst()
    2. 'Hier dein Code
    3. End Sub
    4. 'Anwendung:
    5. Dim t As New Thread(AddressOf DasAllesWasDuMachenWillst)
    6. t.Start()


    MfG
    Danke Dir.

    Glaube, da habe ich wohl was nicht richtig verstanden oder ....

    Habe jetzt:

    Sub

    VB.NET-Quellcode

    1. Private Sub checkupdate_status()
    2. ' hier der ganze Code, der in btn_checkupdates_Click war
    3. ' inklusive Thread.Sleep(500) zwischen den Handlungen
    4. End Sub



    Button-Klick

    VB.NET-Quellcode

    1. Private Sub btn_checkupdates_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_checkupdates.Click
    2. Dim check_update As New Thread(AddressOf checkupdate_status)
    3. check_update.Start()
    4. End Sub


    Selbe Problem.

    Bestimmt falsch, gell? ;)

    msdn.microsoft.com/de-de/library/xx3ezzs2.aspx
    Käme da bei mir das zweite Beispiel in Betracht?
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Erledigt.

    Problem anders gelöst.
    Eine Form als Statusfenster genommen (angedockt).
    Mit True und False die entsprechenden Infofelder eingeblendet/ausgeblendet.

    Danke trotzdem.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren