@herbivore Danke!
Also was ich vergessen habe zu erwähnen. Ich kopiere in meinem Test nur eine Datei, die ist 3,53 GB groß.
Ich teste mal die bytesPerSecond zusammen zu zählen und durch i zu teilen.
EDIT: Ach ne quatsch! ich brauche eine neue Zählvariable, welche ebenfalls nur im Sekundentakt hochgezählt wird.
Ich habe das ganze mal ein bisschen erweitert:
static void Copy(string sourcePath, string destinationPath)
{
FileInfo sourceFile = new FileInfo(sourcePath);
FileInfo destinationFile = new FileInfo(destinationPath);
FileStream sourceStream = sourceFile.OpenRead();
FileStream destinationStream = destinationFile.OpenWrite();
int fileBufferSize = 8192;
int copiedBytes = 0;
int readBytes = 0;
Byte[] copyBuffer = new Byte[fileBufferSize];
long bytesPerSecond = 0L;
int lastTicks = Environment.TickCount;
long lastBytes = 0L;
for (int i = 0; (readBytes = sourceStream.Read(copyBuffer, 0, fileBufferSize)) > 0; i++)
{
destinationStream.Write(copyBuffer, 0, fileBufferSize);
copiedBytes += readBytes;
if ((Environment.TickCount - lastTicks) >= 1000)
{
bytesPerSecond = copiedBytes - lastBytes;
lastBytes = copiedBytes;
lastTicks = Environment.TickCount;
}
Console.WriteLine("{0} bytes von {1} bytes kopiert, {2} bytes / Sekunde", copiedBytes, sourceFile.Length, bytesPerSecond);
}
}
Aber ich weiß jetzt nicht ob die Berechnung nicht stimmt, oder ob es wirklich dauernd zwischen 9 mb/s und 120 mb/s schwankt.
Weil "File.Copy" so statisch ist, da kommt im Grunde nichts zurück. Ich möchte schon gerne in regelmäßigen Abständen ein Feedback bekommen, dass der Vorgang noch läuft und wie viel schon abgeschlossen ist.
Hallo ich bastel gerade an einer Funktion um eine Datei zu kopieren.
Bis jetzt funktioniert das ganz gut. ABER: hat jemand eine Idee wie ich berechnen kann wie viel Bytes/Sekunde kopiert werden?
FileInfo sourceFile = new FileInfo(sourcePath);
FileInfo destinationFile = new FileInfo(destinationPath);
FileStream sourceStream = sourceFile.OpenRead();
FileStream destinationStream = destinationFile.OpenWrite();
int fileBufferSize = 8192;
int copiedBytes = 0;
Byte[] copyBuffer = new Byte[fileBufferSize];
while ((copiedBytes += sourceStream.Read(copyBuffer, 0, fileBufferSize)) > 0)
{
destinationStream.Write(copyBuffer, 0, fileBufferSize);
Console.WriteLine("{0} bytes von {1} bytes kopiert, {2} bytes/Sekunde", copiedBytes, sourceFile.Length, 0);
}
Hallo, ich habe ein Fontobjekt(Arial und fontSize 15), ich habe einen String(Hallo Welt) und möchte im Grunde vorkalkulieren, wie hoch und breit in Pixeln, dieser Text sein wird.
Hallo, ich habe in einer ListBox ein ContextMenu, darin habe ich MenuItems mit Commands. Der CanEyecute handler wird nur ausgelöst wenn sich die election der ListBox ändern, kann ich das ändern auf z.b. ContextMenuOpening?
Oder eine andere Frage, wenn ich jetzt eigene Control schreibe, wie kann ich darin einen Command Auslöser implementieren?
Aber ich habe noch keine richtiges Tutorial entdeckt, welcher mit zeig wie ich das umsetzen kann, was ich vor habe...