UnmanagedMemoryStream Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
- Öröklődés
- 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 |
| ReadExactly(Span<Byte>) |
Beolvassa a bájtokat az aktuális adatfolyamból, és a streamen belüli pozíciót a feltöltésig |
| ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Aszinkron módon beolvassa a bájtok |
| 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 |
| 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. |