Heim > Backend-Entwicklung > C++ > Wie kann ich Daten zwischen Streams in .NET effizient kopieren?

Wie kann ich Daten zwischen Streams in .NET effizient kopieren?

DDD
Freigeben: 2025-01-31 09:16:08
Original
317 Leute haben es durchsucht

How Can I Efficiently Copy Data Between Streams in .NET?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage