UnmanagedMemoryStream Osztály

Definíció

Fontos

Ez az API nem CLS-kompatibilis.

Hozzáférést biztosít a felügyelt kódból származó nem felügyelt memóriablokkokhoz.

public ref class UnmanagedMemoryStream : System::IO::Stream
public class UnmanagedMemoryStream : System.IO.Stream
[System.CLSCompliant(false)]
public class UnmanagedMemoryStream : System.IO.Stream
type UnmanagedMemoryStream = class
    inherit Stream
[<System.CLSCompliant(false)>]
type UnmanagedMemoryStream = class
    inherit Stream
Public Class UnmanagedMemoryStream
Inherits Stream
Öröklődés
UnmanagedMemoryStream
Öröklődés
UnmanagedMemoryStream
Származtatott
Attribútumok

Példák

Az alábbi példakód bemutatja, hogyan lehet olvasni és írni a nem felügyelt memóriába az UnmanagedMemoryStream osztály használatával. A nem felügyelt memória blokkja az osztály használatával Marshal lesz lefoglalva és felszabadítva.


// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{
    static void Main()
    {
        // Create some data to read and write.
        byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");

        // Allocate a block of unmanaged memory and return an IntPtr object.	
        IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

        // Get a byte pointer from the IntPtr object.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        // Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
        UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);

        // Write the data.
        writeStream.Write(message, 0, message.Length);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
        UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
        byte[] outMessage = new byte[message.Length];

        // Read from unmanaged memory to the byte array.
        readStream.Read(outMessage, 0, message.Length);

        // Close the stream.
        readStream.Close();

        // Display the data to the console.
        Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

        // Free the block of unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

        Console.ReadLine();
    }
}

Megjegyzések

Ez az osztály a meglévő streamalapú modellel támogatja a nem felügyelt memória elérését, és nem követeli meg, hogy a nem felügyelt memória tartalma a halomba legyen másolva.

Note

Ez a típus implementálja az interfészt IDisposable , de valójában nincs elidegenítendő erőforrása. Ez azt jelenti, hogy a Dispose() közvetlen meghívásával vagy egy olyan nyelvi szerkezettel, mint például using (C#-ban) vagy Using (Visual Basic) nem szükséges.

Konstruktorok

Name Description
UnmanagedMemoryStream()

Inicializálja a UnmanagedMemoryStream osztály új példányát.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicializálja az osztály új példányát a megadott hely, a memória hossza, a teljes memóriamennyiség és a UnmanagedMemoryStream fájlelérési értékek használatával.

UnmanagedMemoryStream(Byte*, Int64)

Inicializálja az osztály új példányát a UnmanagedMemoryStream megadott hely és memóriahossz használatával.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicializálja az UnmanagedMemoryStream osztály új példányát egy biztonságos pufferben egy megadott eltolással, hosszsal és fájlhozzáféréssel.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicializálja az UnmanagedMemoryStream osztály új példányát egy biztonságos pufferben egy megadott eltolással és hosszúsággal.

Tulajdonságok

Name Description
CanRead

Értéket kap, amely jelzi, hogy egy stream támogatja-e az olvasást.

CanSeek

Egy értéket kap, amely jelzi, hogy egy stream támogatja-e a keresést.

CanTimeout

Olyan értéket kap, amely meghatározza, hogy az aktuális stream időtúllépést okozhat-e.

(Öröklődés forrása Stream)
CanWrite

Értéket kap, amely jelzi, hogy egy stream támogatja-e az írást.

Capacity

Lekéri a stream hosszát (méretét) vagy a streamhez (kapacitáshoz) rendelt memória teljes mennyiségét.

Length

Lekéri a streamben lévő adatok hosszát.

Position

Lekéri vagy beállítja az aktuális pozíciót egy streamben.

PositionPointer

Lekéri vagy beállítja a bájtmutatót egy streamhez a stream aktuális pozíciója alapján.

ReadTimeout

Ezredmásodpercben lekéri vagy beállítja azt az értéket, amely meghatározza, hogy a stream mennyi ideig kísérel meg olvasni, mielőtt túllépi az időkorlátot.

(Öröklődés forrása Stream)
WriteTimeout

Ezredmásodpercben lekéri vagy beállít egy értéket, amely meghatározza, hogy a stream mennyi ideig kísérel meg írni, mielőtt időtúllépést végezne.

(Öröklődés forrása Stream)

Metódusok

Name Description
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Aszinkron olvasási műveletet kezd. (Fontolja meg a használatot ReadAsync(Byte[], Int32, Int32) .)

(Öröklődés forrása Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Aszinkron írási műveletet kezd. (Fontolja meg a használatot WriteAsync(Byte[], Int32, Int32) .)

(Öröklődés forrása Stream)
Close()

Bezárja az aktuális streamet, és felszabadítja az aktuális adatfolyamhoz társított összes erőforrást (például szoftvercsatornákat és fájlfogópontokat). A metódus meghívása helyett győződjön meg arról, hogy a stream megfelelően van elosztva.

(Öröklődés forrása Stream)
CopyTo(Stream, Int32)

Beolvassa a bájtokat az aktuális streamből, és egy megadott pufferméret használatával egy másik streambe írja őket. Mindkét streampozíciót a másolt bájtok száma emeli ki.

(Öröklődés forrása Stream)
CopyTo(Stream)

Beolvassa a bájtokat az aktuális streamből, és egy másik streambe írja őket. Mindkét streampozíciót a másolt bájtok száma emeli ki.

(Öröklődés forrása Stream)
CopyToAsync(Stream, CancellationToken)

Aszinkron módon beolvassa a bájtokat az aktuális streamből, és egy megadott lemondási jogkivonat használatával egy másik streambe írja őket. Mindkét streampozíciót a másolt bájtok száma emeli ki.

(Öröklődés forrása Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Aszinkron módon beolvassa a bájtokat az aktuális streamből, és egy megadott pufferméret és lemondási jogkivonat használatával egy másik streambe írja őket. Mindkét streampozíciót a másolt bájtok száma emeli ki.

(Öröklődés forrása Stream)
CopyToAsync(Stream, Int32)

Aszinkron módon beolvassa a bájtokat az aktuális adatfolyamból, és egy megadott puffermérettel egy másik streambe írja őket. Mindkét streampozíciót a másolt bájtok száma emeli ki.

(Öröklődés forrása Stream)
CopyToAsync(Stream)

Aszinkron módon beolvassa a bájtokat az aktuális streamből, és egy másik streambe írja őket. Mindkét streampozíciót a másolt bájtok száma emeli ki.

(Öröklődés forrása Stream)
CreateObjRef(Type)

Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt.

(Öröklődés forrása MarshalByRefObject)
CreateWaitHandle()
Elavult.
Elavult.
Elavult.

Objektum lefoglalása WaitHandle .

(Öröklődés forrása Stream)
Dispose()

Felszabadítja a .-hez használt összes erőforrást Stream.

(Öröklődés forrása Stream)
Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által UnmanagedMemoryStream használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

DisposeAsync()

Aszinkron módon felszabadítja a nem felügyelt erőforrásokat, amelyeket a Stream.

(Öröklődés forrása Stream)
EndRead(IAsyncResult)

Megvárja, amíg a függőben lévő aszinkron olvasás befejeződik. (Fontolja meg a használatot ReadAsync(Byte[], Int32, Int32) .)

(Öröklődés forrása Stream)
EndWrite(IAsyncResult)

Aszinkron írási művelet befejezése. (Fontolja meg a használatot WriteAsync(Byte[], Int32, Int32) .)

(Öröklődés forrása Stream)
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
Flush()

Felülbírálja a Flush() metódust, hogy a művelet ne legyen végrehajtva.

FlushAsync()

Aszinkron módon törli az adatfolyam összes pufferét, és a pufferelt adatokat a mögöttes eszközre írja.

(Öröklődés forrása Stream)
FlushAsync(CancellationToken)

Felülbírálja a FlushAsync(CancellationToken) metódust, hogy a művelet megszakadjön, ha meg van adva, de más műveletet nem hajt végre.

FlushAsync(CancellationToken)

Aszinkron módon törli a stream összes pufferét, a pufferelt adatokat az alapul szolgáló eszközre írja, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetLifetimeService()
Elavult.

Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot.

(Öröklődés forrása MarshalByRefObject)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
Initialize(Byte*, Int64, Int64, FileAccess)

Inicializálja az UnmanagedMemoryStream osztály új példányát egy nem felügyelt memóriahelyre mutató mutatóval.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inicializálja az UnmanagedMemoryStream osztály új példányát egy biztonságos pufferben egy megadott eltolással, hosszsal és fájlhozzáféréssel.

InitializeLifetimeService()
Elavult.

Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához.

(Öröklődés forrása MarshalByRefObject)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MemberwiseClone(Boolean)

Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre.

(Öröklődés forrása MarshalByRefObject)
ObjectInvariant()
Elavult.

Támogatja a Contract.

(Öröklődés forrása Stream)
Read(Byte[], Int32, Int32)

Beolvassa a megadott számú bájtot a megadott tömbbe.

Read(Span<Byte>)

A nem felügyelt memóriafolyam összes bájtját beolvassa a megadott bájttartományba.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Aszinkron módon beolvassa a megadott számú bájtot a megadott tömbbe.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Aszinkron módon beolvassa a bájtok sorozatát az aktuális adatfolyamból, az olvasási bájtok számával előrelép a streamben, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
ReadAsync(Byte[], Int32, Int32)

Aszinkron módon beolvassa az aktuális adatfolyamból származó bájtok sorozatát, és az olvasási bájtok számával előrelépteti a streamen belüli pozíciót.

(Öröklődés forrása Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Aszinkron módon beolvassa a nem felügyelt memóriafolyam bájtjait a memóriarégióba.

ReadAsync(Memory<Byte>, CancellationToken)

Aszinkron módon beolvassa a bájtok sorozatát az aktuális adatfolyamból, az olvasási bájtok számával előrelép a streamben, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Legalább egy bájtot olvas be az aktuális adatfolyamból, és az olvasási bájtok számával előrelép a streamen belül.

(Öröklődés forrása Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Aszinkron módon legalább egy minimális bájtszámot olvas be az aktuális streamből, az olvasási bájtok számával előrelép a streamen belül, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
ReadByte()

Beolvassa a bájtot egy streamből, és egy bájttal előrelép a streamen belül, vagy -1 ad vissza, ha a stream végén van.

ReadExactly(Byte[], Int32, Int32)

Beolvassa a bájtok count számát az aktuális streamből, és előrelép a streamen belüli pozíción.

(Öröklődés forrása Stream)
ReadExactly(Span<Byte>)

Beolvassa a bájtokat az aktuális adatfolyamból, és a streamen belüli pozíciót a feltöltésig buffer előrelépteti.

(Öröklődés forrása Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Aszinkron módon beolvassa a bájtok count számát az aktuális streamből, előrelép a streamben, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Aszinkron módon beolvassa a bájtokat az aktuális adatfolyamból, a streamen belüli pozíciót a feltöltésig buffer , és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
Seek(Int64, SeekOrigin)

Az aktuális stream aktuális pozícióját a megadott értékre állítja.

SetLength(Int64)

A stream hosszát egy megadott értékre állítja.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
Write(Byte[], Int32, Int32)

Bájtblokkot ír az aktuális adatfolyamba egy pufferből származó adatokkal.

Write(ReadOnlySpan<Byte>)

Bájtblokkot ír az aktuális nem felügyelt memóriafolyamba a megadott bájttartományból származó adatok használatával.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Aszinkron módon bájtok sorozatát írja az aktuális streambe, az aktuális pozíciót a streamen belül a megírt bájtok számával lépteti előre, és figyeli a lemondási kérelmeket.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Aszinkron módon bájtok sorozatát írja az aktuális streambe, az aktuális pozíciót a streamen belül a megírt bájtok számával lépteti előre, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
WriteAsync(Byte[], Int32, Int32)

Aszinkron módon bájtok sorozatát írja az aktuális adatfolyamba, és a megírt bájtok számával előrelépteti a stream aktuális pozícióját.

(Öröklődés forrása Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Aszinkron módon több bájtot ír az aktuális adatfolyamba, a megírt bájtok számával előrelépi a stream aktuális pozícióját, és figyeli a lemondási kérelmeket.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Aszinkron módon bájtok sorozatát írja az aktuális streambe, az aktuális pozíciót a streamen belül a megírt bájtok számával lépteti előre, és figyeli a lemondási kérelmeket.

(Öröklődés forrása Stream)
WriteByte(Byte)

Bájtot ír a fájlstream aktuális helyére.

Bővítő metódusok

Name Description
AsInputStream(Stream)

A .NET felügyelt streamet konvertálja Windows Store-alkalmazásokhoz a Windows-futtatókörnyezet bemeneti adatfolyamává.

AsOutputStream(Stream)

A .NET felügyelt streamet konvertálja az Windows Store-alkalmazásokhoz a Windows-futtatókörnyezet kimeneti adatfolyamává.

AsRandomAccessStream(Stream)

A megadott streamet véletlenszerű hozzáférési adatfolyammá alakítja.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfigurálja, hogy az aszinkron eldobható feladatok hogyan lesznek végrehajtva.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Aszinkron módon beolvassa a bájtokat a Stream megadottból, és egy lemondási jogkivonat használatával írja őket a megadottba PipeWriter.

A következőre érvényes: