ProgressBar Update für ein einziges Kommando? (also ohne DoEvents)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Hinti.

    ProgressBar Update für ein einziges Kommando? (also ohne DoEvents)

    Hallo,

    Ich setze einen einzigen Befehl ab:

    VB.NET-Quellcode

    1. Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(<"QUELLVERZEICHNIS">, <"ZIELVERZEICHNIS">, False)


    und dieser dauert sehr lange, da der gesamte Ordnerinhalt kopiert wird (und natürlich auch so gewollt ist).
    Leider kann ich daher aber auch kein "DoEvents" einbauen, um meinen ProgressBar wachsen lassen zu können.

    Gibt es dafür eine simple Lösung? Denn mein Timer rührt während des Befehles keine Zeile an :!:
    einfach die Progressbar auf marquee stellen.

    Einen realen Fortschritt damit anzuzeigen ist zwar nicht möglich aber Optisch siehts aus aus würde das Tool arbeiten.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Danke das war genau das was ich brauchte.

    Aufgefallen ist es mir deshalb nicht, weil beim Objectbrowsing der Parameter angezeigt wurde: "Overwrite True/False" -
    aber wenn ich erzwungen die Eingabe: "FileIO.UIOption.AllDialogs" an der Stelle verwende, klappte es.

    ...Ja ich weiß, ich hätte es in der Hilfe/Objectbrowser selber auch finden können :P
    Trotzdem Danke für die Hilfe :thumbsup:
    Anfangs war es eine gute Lösung. Für den "CopyDirectory" Befehl. Aber mit einer großen Schwäche...
    • "UIOption.AllDialogs" hatte zur Folge, dass wenn eine Datei nicht kopiert werden kann, ein Subdialog kommt der die Möglichkeit anbietet: Dieses File zu "ignorieren". Infolge löst das keine Ausnahme aus und mein ganzes Programm kommt so durcheinander. Es gibt keine Möglichkeit diesen durch eine Ausnahme zu ersetzen.
    Noch blöder wurde es mit dem Kommando: "ZipFile.CreateFromDirectory", denn dieser bietet gar nix derartiges an, "UIOption" und so was. Also machte ich mich erneut auf die Suche.

    Und ich habe die genialste Lösung genau für solche Fälle gefunden... Perfekt bis ins kleinste Details. Ich lasse meine aufwendigen Befehle in einem eigenen Task abarbeiten. Das Schlüsselwort lautet: "Background Worker". Fantastische Erfindung. Mittlerweile erstelle ich damit meine Zipfiles, kopiere Directories oder lösche sie...

    Also falls jemals mal wer in die gleiche Situation kommt... und auch wenns anfangs schwierig ausschaut, neee die sind echt total easy zu handeln :thumbup:

    RoulettePilot schrieb:

    *g* Das stand doch im Posting 3 schon .. he he *selbstaufdieSchulterklopf*

    ...negativ. Konnte ich nicht zuordnern. Da hättest du etwas mehr ausholen müssen.

    Vor ein paar Tagen noch habe ich dies einfach überlesen, in der Annahme, TimerEvent Aktualisierung läuft nicht! Was ja auch stimmt. Also hat dein b) für mich a) auch ausgeschlossen. Zu a) hatte ich ja noch keine Ahnung. Da du ja auch b) vorgeschlagen hast, was ich aber wußte das nicht geht, ging ich wohl intuitiv davon aus, das du auch bei a) nicht weißt was du schreibst :whistling:

    Aber Klar, jetzt verstehe ich es auch :D
    nur habe ich es nicht dir zu verdanken. --nix für ungut-- :thumbsup:

    Hilfreich wäre es so gewesen: Man kann einen Prozess/Methode in einem eigenen Prozess laufen lassen, der die aktuelle Form nicht ausbremst. Da gibts was, ich glaube "Background Worker"...