Optimierung der Datenübertragung zwischen Streams in .NET
Verschieben von Daten zwischen Streams ist eine häufige Programmieraufgabe. .NET bietet verschiedene Methoden, die jeweils für verschiedene Framework -Versionen und Leistungsanforderungen geeignet sind.
Asynchrones Kopieren mit Stream.CopyToAsync
(.NET 4.5 und später):
Verwenden Sie die asynchrone Methode: Stream.CopyToAsync
für eine optimale Leistung in neueren .NET -Versionen:
<code class="language-csharp">using System.IO; using System.Threading.Tasks; // ... await input.CopyToAsync(output);</code>
Dieser asynchrone Ansatz ermöglicht eine gleichzeitige Verarbeitung und verhindern das Blockieren während des Kopiervorgangs.
Synchrones Kopieren mit Stream.CopyTo
(.NET 4.0 und später):
In .NET 4.0 und spätere Versionen liefert die synchrone Stream.CopyTo
-Methode eine einfachere Alternative für Situationen, in denen der asynchrone Betrieb nicht erforderlich ist:
<code class="language-csharp">using System.IO; // ... input.CopyTo(output);</code>
Diese Methode ist unkompliziert, blockiert aber die Ausführung, bis die Kopie beendet ist.
Manuelles Stream Copying (.NET 3.5 und früher):
Für ältere .NET -Frameworks (3.5 und unten) ist manuelles Stream -Kopieren erforderlich:
<code class="language-csharp">using System.IO; public static void CopyStream(Stream input, Stream output) { byte[] buffer = new byte[32768]; // Optimized buffer size int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, read); } }</code>
Diese manuelle Methode bietet Flexibilität für die Fortschrittsverfolgung und verarbeitet Streams mit unbekannter Länge. Die Puffergröße ist ein Schlüsselfaktor für die Effizienz. 32768 Bytes ist ein allgemein guter Ausgangspunkt. Das Experimentieren kann optimale Größen für bestimmte Szenarien ergeben.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten zwischen Streams in .NET effizient kopieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!