UnmanagedMemoryStream Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
Poskytuje přístup k nespravovaným blokům paměti ze spravovaného kódu.
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
- Dědičnost
- Dědičnost
- Odvozené
- Atributy
Příklady
Následující příklad kódu ukazuje, jak číst z a zapisovat do nespravované paměti pomocí UnmanagedMemoryStream třídy . Blok nespravované paměti se přidělí a zruší přidělení pomocí Marshal třídy.
// 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();
}
}
Poznámky
Tato třída podporuje přístup k nespravované paměti pomocí existujícího modelu založeného na datových proudech a nevyžaduje, aby obsah nespravované paměti byl zkopírován do haldy.
Poznámka
Tento typ implementuje IDisposable rozhraní, ale ve skutečnosti nemá žádné prostředky k odstranění. To znamená, že jeho odstranění přímým voláním Dispose() nebo pomocí konstruktoru jazyka, jako using
je (v jazyce C#) nebo Using
(v jazyce Visual Basic), není nutné.
Konstruktory
UnmanagedMemoryStream() |
Inicializuje novou instanci UnmanagedMemoryStream třídy . |
UnmanagedMemoryStream(Byte*, Int64) |
Inicializuje novou instanci UnmanagedMemoryStream třídy pomocí zadaného umístění a délky paměti. |
UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) |
Inicializuje novou instanci UnmanagedMemoryStream třídy pomocí zadaného umístění, délky paměti, celkové velikosti paměti a hodnot přístupu k souborům. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64) |
Inicializuje novou instanci UnmanagedMemoryStream třídy v bezpečné vyrovnávací paměti se zadaným posunem a délkou. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) |
Inicializuje novou instanci UnmanagedMemoryStream třídy v bezpečné vyrovnávací paměti se zadaným posunem, délkou a přístupem k souborům. |
Vlastnosti
CanRead |
Získá hodnotu označující, zda datový proud podporuje čtení. |
CanSeek |
Získá hodnotu označující, zda datový proud podporuje hledání. |
CanTimeout |
Získá hodnotu, která určuje, zda aktuální datový proud může vypršení časového limitu. (Zděděno od Stream) |
CanWrite |
Získá hodnotu označující, zda datový proud podporuje zápis. |
Capacity |
Získá délku (velikost) datového proudu nebo celkové množství paměti přiřazené k datovému proudu (kapacita). |
Length |
Získá délku dat v datovém proudu. |
Position |
Získá nebo nastaví aktuální pozici v datovém proudu. |
PositionPointer |
Získá nebo nastaví ukazatel na bajt datový proud na základě aktuální pozice v datovém proudu. |
ReadTimeout |
Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí číst před vypršením časového limitu. (Zděděno od Stream) |
WriteTimeout |
Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí zapisovat před vypršením časového limitu. (Zděděno od Stream) |
Metody
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Zahájí asynchronní operaci čtení. (Zvažte místo toho použití ReadAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
Close() |
Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu. Místo volání této metody se ujistěte, že datový proud je správně odstraněn. (Zděděno od Stream) |
CopyTo(Stream) |
Přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyTo(Stream, Int32) |
Načte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu s použitím zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream) |
Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream, CancellationToken) |
Asynchronně přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadaného tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream, Int32) |
Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti a tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
CreateWaitHandle() |
Zastaralé.
Zastaralé.
Zastaralé.
Přidělí WaitHandle objekt. (Zděděno od Stream) |
Dispose() |
Uvolní všechny prostředky používané nástrojem Stream. (Zděděno od Stream) |
Dispose(Boolean) |
Uvolní nespravované prostředky používané nástrojem UnmanagedMemoryStream a volitelně uvolní spravované prostředky. |
DisposeAsync() |
Asynchronně uvolní nespravované prostředky, které Streampoužívá . (Zděděno od Stream) |
EndRead(IAsyncResult) |
Čeká na dokončení čekajícího asynchronního čtení. (Zvažte místo toho použití ReadAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
EndWrite(IAsyncResult) |
Ukončí asynchronní operaci zápisu. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Flush() |
Přepíše metodu Flush() tak, aby se neprováděla žádná akce. |
FlushAsync() |
Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do základního zařízení. (Zděděno od Stream) |
FlushAsync(CancellationToken) |
Přepíše metodu FlushAsync(CancellationToken) tak, aby operace byla zrušena, pokud je zadána, ale není provedena žádná jiná akce. |
FlushAsync(CancellationToken) |
Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud, způsobí zápis všech dat do vyrovnávací paměti do základního zařízení a monitoruje požadavky na zrušení. (Zděděno od Stream) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetLifetimeService() |
Zastaralé.
Načte aktuální životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
Initialize(Byte*, Int64, Int64, FileAccess) |
Inicializuje novou instanci UnmanagedMemoryStream třídy pomocí ukazatele na umístění nespravované paměti. |
Initialize(SafeBuffer, Int64, Int64, FileAccess) |
Inicializuje novou instanci UnmanagedMemoryStream třídy v bezpečné vyrovnávací paměti se zadaným posunem, délkou a přístupem k souborům. |
InitializeLifetimeService() |
Zastaralé.
Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
MemberwiseClone(Boolean) |
Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu. (Zděděno od MarshalByRefObject) |
ObjectInvariant() |
Zastaralé.
Poskytuje podporu pro Contract. (Zděděno od Stream) |
Read(Byte[], Int32, Int32) |
Načte zadaný počet bajtů do zadaného pole. |
Read(Span<Byte>) |
Načte všechny bajty tohoto nespravovaného datového proudu paměti do zadaného rozsahu bajtů. |
Read(Span<Byte>) |
Při přepsání v odvozené třídě přečte sekvenci bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů. (Zděděno od Stream) |
ReadAsync(Byte[], Int32, Int32) |
Asynchronně přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů. (Zděděno od Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně přečte zadaný počet bajtů do zadaného pole. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení. (Zděděno od Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronně načítá nespravovaný datový proud paměti v bajtech do oblasti paměti. |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení. (Zděděno od Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Přečte alespoň minimální počet bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů. (Zděděno od Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Asynchronně přečte alespoň minimální počet bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení. (Zděděno od Stream) |
ReadByte() |
Načte bajt z datového proudu a posune pozici v datovém proudu o jeden bajt, nebo vrátí hodnotu -1, pokud je na konci datového proudu. |
ReadExactly(Byte[], Int32, Int32) |
Načte |
ReadExactly(Span<Byte>) |
Načte bajty z aktuálního datového proudu a posune pozici v rámci datového proudu, dokud |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně načte |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Asynchronně čte bajty z aktuálního datového proudu, posune pozici v rámci datového proudu až do |
Seek(Int64, SeekOrigin) |
Nastaví aktuální pozici aktuálního datového proudu na danou hodnotu. |
SetLength(Int64) |
Nastaví délku datového proudu na zadanou hodnotu. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Write(Byte[], Int32, Int32) |
Zapíše blok bajtů do aktuálního datového proudu pomocí dat z vyrovnávací paměti. |
Write(ReadOnlySpan<Byte>) |
Zapíše blok bajtů do aktuálního nespravovaného paměťového streamu pomocí dat z zadaného rozsahu bajtů. |
Write(ReadOnlySpan<Byte>) |
Při přepsání v odvozené třídě zapíše sekvenci bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů. (Zděděno od Stream) |
WriteAsync(Byte[], Int32, Int32) |
Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů. (Zděděno od Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky na zrušení. |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky na zrušení. (Zděděno od Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchronně zapíše rozsah bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a monitoruje požadavky na zrušení. |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky na zrušení. (Zděděno od Stream) |
WriteByte(Byte) |
Zapíše bajt na aktuální pozici v datovém proudu souboru. |
Metody rozšíření
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Asynchronně přečte bajty z objektu Stream a zapíše je do zadaného PipeWriterobjektu pomocí tokenu zrušení. |
AsInputStream(Stream) |
Převede spravovaný datový proud v aplikacích .NET pro Windows Store na vstupní datový proud v prostředí Windows Runtime. |
AsOutputStream(Stream) |
Převede spravovaný datový proud v aplikacích .NET pro Windows Store na výstupní datový proud v prostředí Windows Runtime. |
AsRandomAccessStream(Stream) |
Převede zadaný datový proud na datový proud s náhodným přístupem. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, jak se provádí funkce awaits u úloh vrácených z asynchronního jednorázového režimu. |
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro