vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Kopierfortschritt 
Autor: Manfred X
Datum: 09.02.11 06:51

Hallo!

Du postest keinen Code - man kann Deine Herangehensweise deshalb kaum
beurteilen.

Offenbar wird der tatsächlich erzielte Endwert der Progressbar durch die
von Dir verwendeten Methoden (Ermittlung der Größe des Zielverzeichnisses)
nicht korrekt bestimmt.

Für einzelne Dateien kann man "My.Computer.Filesystem.Copyfile" nutzen, um
einen Fortschrittsbalken anzuzeigen (Parameter: Microsoft.VisualBasic.FileIO.
UIOption.AllDialogs). Aber ich glaube, es ist damit nicht möglich, den Gesamt-
fortschritt beim Kopieren einer Dateiliste auszugeben. Mit "CopyDirectory" kann
ein komplettes Verzeichnis "visualisiert" kopiert werden.

Versuche folgendes:

Vor dem Start des Kopiervorgangs berechnest Du die Summe der Bytelängen
der zu kopierenden Dateien. Das ist der Maximumwert der Progressbar
(entspricht 100%).

Während des Kopierens fragst Du im Timer ab, welche der zu kopierenden
Dateien im Zielverzeichnis bereits vorhanden sind.
Hat eine Datei im Zielverzeichnis ihre Gesamtgröße erreicht, addierst Du
deren Länge zu einer Summationsvariable und notierst diese Datei
als erledigt.

Beim nächsten Aufruf des Timers werden nur noch die restlichen Dateien
abgefragt. Inzwischen vollständig kopierte Dateien --> siehe oben.
Du findest im Ziel dann meist noch eine Datei, die nicht ihre
Gesamtgröße erreicht hat. Deren aktuelle Länge + der Wert der Summations-
variable für die Längen der bereits vollständig kopierten Dateien liefern
den aktuellen Progresswert (in Relation zum 100% Gesamtwert setzen).

Etwa so:
For Each foundFile As String In My.Computer.FileSystem.GetFiles(
    My.Computer.FileSystem.SpecialDirectories.MyDocuments,
    Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.rtf")
    'aktuell kopierte Datei foundfile an den Timer melden (form-globale 
    ' Variable) 
    My.Computer.FileSystem.CopyFile(foundFile, "C:\testdirectory\" & foundFile)
    'Summationsvariable der Dateilänge mitführen (Länge von foundfile)
Next foundfile
Das könnte funktionieren .... wenn das Dateisystem die aktuellen
Dateigrößen korrekt und regelmäßig angibt ... wenn der Kopiervorgang
asynchron (in einem eigenen Thread) läuft ... wenn die Controler nicht ...

MfG
Manfred

Beitrag wurde zuletzt am 09.02.11 um 06:52:07 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Kopierfortschritt1.283Systemschrauber08.02.11 18:19
Re: Kopierfortschritt782Manfred X09.02.11 06:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel