Ich erstelle ein Programm zum Kopieren von Dateien, das eine große Anzahl von Dateien (~ 100.000) mit einer Größe von ~ 50 KB mit dem Befehl ROBOCOPY kopiert.
Für jede Datei erstelle ich einen neuen Prozess und übergebe den ROBOCOPY-Befehl und die Argumente wie folgt:
%Vor%Anstatt für jede Datei einen Prozess zu erstellen, suche ich nach einem besseren Ansatz, der in Bezug auf Leistung und Design gut ist. Kann jemand eine bessere Methode vorschlagen?
Ich würde einfach System.IO verwenden. Sollte genug schnell genug sein, und Ihr Dateiname könnte ein Platzhalter sein.
%Vor%Diese Frage ist ein bisschen alt, aber ich dachte, ich würde antworten, um jedem zu helfen, der noch darauf landet. Ich schrieb eine Bibliothek mit dem Namen RoboSharp ( Ссылка ), die alle guten Dinge in Robocopy zu c # bringt. Sehen Sie sich an, ob Sie die Leistungsfähigkeit von Robocopy in c # benötigen.
.cmd hat folgende Zeilen
%Vor%Wenn ich & gt; Robocopy sample.cmd Ich beginne mit 4 multiple Windows Dateien gleichzeitig zu kopieren, wie oben beschrieben, es wartet für eine andere Datei, da es eine Wartezeit hat, wenn die Datei von einem anderen Prozess verwendet wird. Es ist mehr schneller als es Arbeit gleichzeitig erledigen.
Jetzt entwickle ich eine GUI mit C # -Fenstern, um den Prozess zu starten, statt zur Befehlskonsole und
starten
Wenn es jedoch die Kontrolle über einen Prozess übernimmt, z. B. cmd.exe und vier Robocopy-Prozesse Taskmanager. Wenn der Prozess cmd.exe abgeschlossen ist, wird der Cursor an label.text "Erfolgreich abgeschlossen. "Während noch Robocopy-Prozesse laufen, können Sie die Robocopy-Fenster sehen den Kopiervorgang machen.
Hier ist die Frage: Ich möchte die Kontrolle über alle Prozesse (cmd.exe und robocopy.exe) übernehmen programmatisch in C #, so dass der label.text nur "erfolgreich abgeschlossen" anzeigen soll Wenn alle Befehle erfolgreich ausgeführt wurden ", wenn ein Fehler auftritt, dann hat die GUI keinen Sinn.
Option 2 (ähnlich wie Biju oben geschrieben hat): ist es besser Robocopy Befehlsskripte zu entfernen? sample.cmd (Batch - Datei) - Datei und schreiben Sie Code, um die 4 Robocopy - Zeilen in C # auszuführen, aber wie Sie das ausführen robooooy script line geschriebene .cmd Datei, da sie auch Argumente haben. Ich Code führt jede Robocopy aus Prozess wird dann jeder zur nächsten Zeile des Codes zurückkehren und wenn es fehlschlägt, können wir den Fehler abfangen und Anzeige im Meldungsfeld.
Hoffe, das wird helfen ... Allerdings suche ich nach einem besseren Weg, wenn sich jemand verbessern kann.