Laden...

Progressbar in gleichmäßigen Zeitabständen aktualisieren

Erstellt von codeit4me vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.042 Views
Thema geschlossen
C
codeit4me Themenstarter:in
5 Beiträge seit 2011
vor 13 Jahren
Progressbar in gleichmäßigen Zeitabständen aktualisieren

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

1.044 Beiträge seit 2008
vor 13 Jahren

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

1.552 Beiträge seit 2010
vor 13 Jahren

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

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

C
codeit4me Themenstarter:in
5 Beiträge seit 2011
vor 13 Jahren

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

1.552 Beiträge seit 2010
vor 13 Jahren

Mit debugging kannst du Zeile für Zeile des Programmcodes durchgehen und somit Fehler suchen.
Debugging in VisualStudio

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

C
codeit4me Themenstarter:in
5 Beiträge seit 2011
vor 13 Jahren

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

49.485 Beiträge seit 2005
vor 13 Jahren

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

1.552 Beiträge seit 2010
vor 13 Jahren

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.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

C
codeit4me Themenstarter:in
5 Beiträge seit 2011
vor 13 Jahren

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

Hinweis von herbivore vor 13 Jahren

So grundlegende und gleichzeitig allgemeine Fragen verstoßen gegen [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

C
codeit4me Themenstarter:in
5 Beiträge seit 2011
vor 13 Jahren

in diesen 2 sekunden soll ein Bild dargestellt werden quasi als intro

1.552 Beiträge seit 2010
vor 13 Jahren

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

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

4.938 Beiträge seit 2008
vor 13 Jahren

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)

Thema geschlossen