Hallo Liebes Forum
Ich hab ein Problem und zwar wollte ich eine Progressbar programmieren die sich innerhalb von ca 2sec füllt eine neue Form startet nun habe ich ein problem
Wie bekomme ich diese 2 secunden hin. Thread.sleep funktioniert in der for schleife nicht und wenn cihs per timer Versuche füllt sich die bar nur zu 90%
Danke Im Voraus
Hallo codeit4me,
siehe [FAQ] Warum blockiert mein GUI? und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke). Verwende lieber einen BackgroundWorker.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo codeiit4me,
willkommen im Forum.
Thread.Sleep() ist im allgemeinen nicht empfehlenswert. Vor allem in deinem Problem nicht. Wie du richtig erkannt hast ist Timer eine bessere Variante. Eine andere Möglichkeit ware ein BackgroundWorker.
Warum die ProgressBar nicht zu 100% gefüllt wird, kannst du gut durch Debuggen herausfinden.
Vertiefe u.a. folgende Artikel:
[FAQ] Kommunikation von 2 Forms
[FAQ] Warum blockiert mein GUI?
Gruß
Michael
Warum die ProgressBar nicht zu 100% gefüllt wird, kannst du gut durch Debuggen herausfinden.
Wie meinst du das durch debuggen
Debuggen bedeutet doch nur das compilieren nd ausführen des codes oder täusche ich mich hier
Mit debugging kannst du Zeile für Zeile des Programmcodes durchgehen und somit Fehler suchen.
Debugging in VisualStudio
oh ok ich nehm alles zurück wenn das so ist versuche ich das mal
Aber nocheinmal zum Backgroundworker
Wie kann ich dort diese 20ms verzögerung einstellen mit der der schritt der progressbar ausgeführt werden soll
Hallo codeit4me,
im BackgroundWorker könntest du natürlich Thread.Sleep benutzen. Oder du verwendest gleich besser einen Timer. Steht aber alles in [FAQ] Warum blockiert mein GUI? und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke).
Bitte beachte vorsorglich [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1.
herbivore
Ich möchte dich fragen was du in deinem BackgroundWorker denn machst? Willst du nur alle 20ms die Progressbar aktualisieren, oder machst du dort auch Berechnungen.
Falls erstere zutrifft, verwirf die Idee sofort wieder. Niemand will eine 2sek Wartedauer für nix. Bei zweiterer kannst du in deiner Berechnung immer wieder aktualisierungen an die GUI werfen.
wärst du trotz allem so freundlich wir den backgroundworker kurz zu erklären in deinen links steht leider nur was von runworkercompleted etc aber ich verstehe nicht wie ich auf die progressbar zugreifen kann
So grundlegende und gleichzeitig allgemeine Fragen verstoßen gegen [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.
in diesen 2 sekunden soll ein Bild dargestellt werden quasi als intro
wärst du trotz allem so freundlich wir den backgroundworker kurz zu erklären in deinen links steht leider nur was von runworkercompleted etc aber ich verstehe nicht wie ich auf die progressbar zugreifen kann
Am besten du siehst dir folgenden Link an und kopierst evtl mal den Code in eine seperates Projekt und gehst Schritt für Schritt mit dem Debugger durch. Das aufgezeigte Problem dürfte bis auf die zusätzliche Berechnung ähnlich sein.
BackgroundWorker-Klasse
Hi codeit4me ,
ich denke, was du suchst, nennt sich SplashScreen.
Im Komponenten-Forum gibt es einige zur Auswahl:
SplashScreen-Komponente (noch eine ;-P)
Yet another SplashsreenHelper (vllt. sollte ErfinderDesRades mal den Rechtschreibfehler im Titel korrigieren: Yet another SplashscreenHelper 😉
Splashscreener (für externe Anwendungen)