Etwas anzeigen in einer gewissen Zeit

  • VB.NET

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

    @Simo1991 Schmeiß den Code sofort weg, sonst kommt noch jemand auf die Idee, das wäre verwendbarer Code :!:
    In der Button_Click sorgst Du dafür, dass die Startbedingungen gesetzt werden und startest den Timer.
    In der Timer_Tick siehst Du nach, was passiert ist und formatierst Deine Laufzeit.
    Außerdem testest Du, ob die Laufzeit überschritten wurde, um den Timer wieder zu stoppen.
    Datum- und Zeitangaben vergleichst Du über die kommunizierende DateTime-Instanz, nicht aber über deren ggf. unterschiedlich formatierte String-Instanz.
    Während der Timer läuft, kannst Du mit Deinen Controls jonglieren und ggf. auch dort im entsprechenden Event den Timer starten.Endlosschleifen wie in Deiner Button1_Click sind ein NoGo.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du denkst zu kompliziert mit dem Timer.
    Eine einfache aber keine gute Lösung wäre, beim Button Click berechnest du Differenz zwischen gesetzter Zeit und aktueller Zeit und fügst den Wert in System.Threading.Sleep() ein.
    Das ist aber ein bescheuerte Lösung, denn deine Form friert solange ein.

    Eine bessere (nicht perfekte, aber wahrscheinlich funktionale) Lösung wäre das Ganze mit Async/Await zu machen.
    Auf deinem Button Click fügst du await Task.Delay() ein auch mit der Differenz zwischen gesetzter Zeit und aktueller Zeit und im Anschluss an das await kannst du dann das ausführen was du nach der Zeit ausführen wolltest.

    Bei der Async/Await Lösung friert dir dann eben deine Form nicht ein.

    Edit: Oder aber du machst es wie @RodFromGermany gesagt hat, das ist vmtl. noch besser.