Announcement

Collapse
No announcement yet.

ProgressBar Fortschritt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ProgressBar Fortschritt

    Hallo,
    hätte eine Frage zu meiner ProgressBar. Diese wird angezeigt, wenn eine Datei verarbeitet wird. dabei wird etwas in einen iostream geschrieben. dies dauert relativ lang (20sec), deswegen würde ich gerne über eine progressbar den anwender über den status informieren. gibt es die möglichkeit, während des schreibvorgangs, meine progressbar fortschrittsanzeige sinnvoll zu aktualisieren (also 100% wenn fertig). in for schleifen oder so war das ja immer kein problem, allerdings habe ich jetzt halt keine schleife sondern nur eine befehlszeile.

    falls das nicht gehen sollte, geht das bei einer progressbar eigentlich auch, dass die fortschrittsleiste kontinuierlich von links nach rechts und von rechts nach links läuft (so dass der Anwender halt weiß, dass das Programm sich nicht aufgehängt hat). wäre auch eine lösung, allerdings wäre mir variante 1 lieber.

    Danke für eure antworten

    mfg
    stash

  • #2
    Hallo,

    ad Variante 1)
    Schreib die Daten nicht alle auf einmal in den Stream sondern Blockweise in einer Schleife. So kannst du den Fortschritt schön anzeigen lassen.
    Das geht natürlich nur dann gut wenn das Schreiben in einem eigenen Thread ausgeführt wird. Je nach dem was dir lieber ist kannst du den Thread erstellen und die Progressbar aktualisieren (Invoke) oder den BackgroundWorker verwenden.
    Solltest du mit Threads nicht sehr vertraut sein ist der BackgroundWorker die richtige Wahl.

    ad Variante 2)
    Die Style-Eigenschaft auf Marquee setzen.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      ok, danke.
      noch eine frage. wie sage ich denn, dass die progressbar loslaufen soll. beim normalen block war es immer performstep(), was ist es denn bei marquee?

      mfg stash

      Comment


      • #4
        Originally posted by Stash View Post
        ok, danke.
        noch eine frage. wie sage ich denn, dass die progressbar loslaufen soll. beim normalen block war es immer performstep(), was ist es denn bei marquee?

        mfg stash
        Die läuft dann automatisch los. D.h. es kann über Enabled = true/false gesteuert werden.


        mfG Gü


        PS: Das wäre einfach zu testen gewesen
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          ok, danke für die antwort. das problem ist, dass ich das ja getestet habe und die leiste läuft bei mir nicht weiter, deswegen hab ich gefragt.

          aber ich glaube die progressbar läuft nicht, da der stream vorgang noch läuft. solange der läuft, steht bei mir die progressbar still.

          gibt es da ne möglichkeit, die progressbar trotz des streamvorgangs laufen zu lassen.

          mfg stash

          Comment


          • #6
            gibt es da ne möglichkeit, die progressbar trotz des streamvorgangs laufen zu lassen.
            Stimmt - hab ich auch vergessen
            Die Ursache ist genau wie du erläutert hast.

            Da bleibt nichts anderes übrig als das Schreiben in einen Thread auszulagern (oder BackgroundWorker).

            Als schnelle äußert unsaubere Lösung die ich nur deshalb erwähne weil ich davon abraten will wäre ein Appliction.DoEvents().

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment

            Working...
            X