ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
21242
21242
EMPFEHLEN
-
05.08.05 18:33 #1
Hallo @ all:
Ich hab' ein kleines Programm gemacht, dass Dateien per File.Copy() kopiert.
Kann ich da eigentlich auch noch 'ne ProgressBar in mein Form machen, dass den Fortschritt anzeigt, weil bei großen Dateien bleibt das Form hängen ...
Kann man die Datei z.B. in 2 MB große Stücke teilen, die das Programm nacheinander kopiert un dann im Zielordner wieder zusammensetzt?
Hab' auch schon was von Threading gehört und auch schon im Forum gesucht, habe aber nichts gefunden.
Hat jemand ein paar Codefetzen, die mir helfen könnten?
MfG Alexander12
-
06.08.05 15:30 #2
- Registriert seit
- Jun 2004
- Ort
- Koblenz (Rheinland-Pfalz)
- Beiträge
- 217
Eine Progressbar aendert auch nichts an der Tatsache, dass dein Programm solange unerreichbar ist, bis die Datei kopiert ist. Das kopieren muss in einem Nebenthread erfolgen, egal ob mit oder ohen Progressbar. Ich denke, dass die Trhead Klasse (System.Threading.Thread) relativ selbsterklaerend ist.
Du instanziierst ein neues Thread-Objekt und uebergibst ihm die Methode die in diesem Thread ausgefuehrt werden soll (in deinem Fall die Kopier-Methode). Dann startest du den Thread via Thread.Start();
Sollte aehnlich dem hier aussehen (nicht hauen bei Fehlern, hab auch nicht die MSDN im Kopf und kein VS drauf :)):
Code :1 2 3
Thread t = new Thread(new ThreadStart(CopyFiles)); t.Start(); //Weitere Anweisungen fuer den Hauptthread
-
07.08.05 20:54 #3
Hallo,
Gut, das habe ich verstanden. Ich habe 'ne Datei (1,3 Gigabyte) kopiert. Das Programm bleibt jetzt nicht mehr hängen und es funktioniert perfekt!
Aber wie kriege ich jetzt die progressbar rein, die den Fortschritt des Kopiervorgangs abruft, denn bei so einer großen Datei dauert das schon sehr lange ...
Das Programm arbeitet zwar Perfekt weiter, aber man weiß ja dann nicht wie viel schon kopiert ist ...
Hier ist mein Code:
[...]Code :1 2
using System.Threading; using System.IO;
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public static void CopyFiles() { try { string path = @"c:\Test.txt"; string path2 = @"c:\Dokumente\Test.txt"; System.IO.File.Copy(path, path2); } catch { MessageBox.Show("Kopieren fehlgeschlagen!"); } } private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(CopyFiles)); t.Start(); }
Danke schon Mal für die Antworten!
-
07.08.05 21:31 #4
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Hi.
Da wirst du dir eine eigene Copy Methode schreiben müssen.
Öffnest die Datei und dort wo die Kopie sein soll erstellst eine neue. In einer Schleife fürst dann die folgenden Aufgaben solange aus bis das letzte Bit übertragen ist.
- Gewisse Anzahl an Bytes lesen
- Gelesenen Bytes die neue Datei schreiben
- Step Methode von der Progressbar aufrufen
MfG,
AlexWith the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
07.08.05 21:38 #5
Hi Alex,
Hast du da evtl. 'nen Code, der mir witerhelfen könnte, hab so was noch nicht gemacht,
bisher hab ich nämlich nur kleine Dateien (*.txt) mit dem einfachen File.Copy() kopiert ...
MfG Alexander12
-
07.08.05 21:50 #6
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Schau dir einfach die Stream und alle davon abgeleiteten Klassen an.
In deinem Thread zum Dateiversand übers Netzwerk habe ich dir einen Thread verlinkt in dem sowas gemacht wurde. Dort wird auch mit Streams gearbeitet, ist so ziemlich das gleiche nur das du halt diesmal einen Stream hast der auf eine Datei zeigt.With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
Hallo Alexander12!
Ich hab heut leider auch nicht so die Zeit.
Hier siehst, wie Du deinen Thread überwachen und stoppen kannst.
Thread Hilfe, wie beenden - Thread
Bau da ein Event ein damit Du den aktuellen AusführungsStatus überwachen kannst.
MfG, cosmoMfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
08.08.05 18:53 #8
Hi.
Danke für eure Antworten, werde mir das gleich mal anschaun.
@Alexander Schuc:
Danke für den Tipp mit den Streams, haben mich echt weitergebracht!
@Cosmo:
Danke für die Infos für Threads, jetzt bin ich ja rund um versorgt!
MfG Alexander12
Ähnliche Themen
-
Webcam durch Website aktivieren & steuern
Von YelloW22 im Forum Flash PlattformAntworten: 0Letzter Beitrag: 10.01.11, 16:39 -
Progressbar steuern bei Multithreading
Von dborni im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 13.04.10, 17:24 -
ToolStripStatusLabel durch verschiedene Threads aktualisieren
Von bi2597 im Forum .NET CaféAntworten: 1Letzter Beitrag: 01.10.09, 15:38 -
SWT Progressbar und Threads
Von kleene0105 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 01.07.08, 08:10 -
GUI durch MIDI steuern
Von DJLopez im Forum Audiotechnik, Recording & Audio-SoftwareAntworten: 0Letzter Beitrag: 11.02.08, 17:34





Zitieren

Login





