UnmanagedMemoryStream Klasa
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Ważne
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
Zapewnia dostęp do niezarządzanych bloków pamięci z kodu zarządzanego.
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
- Dziedziczenie
- Dziedziczenie
- Pochodne
- Atrybuty
W poniższym przykładzie kodu pokazano, jak odczytywać i zapisywać w niezarządzanej pamięci przy użyciu klasy UnmanagedMemoryStream. Blok niezarządzanej pamięci jest przydzielany i conięto przydział przy użyciu klasy Marshal.
// 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();
}
}
Ta klasa obsługuje dostęp do niezarządzanej pamięci przy użyciu istniejącego modelu opartego na strumieniu i nie wymaga skopiowania zawartości niezarządzanej pamięci do stertki.
Uwaga
Ten typ implementuje interfejs IDisposable, ale w rzeczywistości nie ma żadnych zasobów do usunięcia. Oznacza to, że usuwanie go bezpośrednio przez wywołanie Dispose() lub użycie konstrukcji językowej, takiej jak using
(w języku C#) lub Using
(w Visual Basic) nie jest konieczne.
Unmanaged |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream. |
Unmanaged |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream przy użyciu określonej lokalizacji i długości pamięci. |
Unmanaged |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream przy użyciu określonej lokalizacji, długości pamięci, całkowitej ilości pamięci i wartości dostępu do plików. |
Unmanaged |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream w bezpiecznym buforze z określonym przesunięciem i długością. |
Unmanaged |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream w bezpiecznym buforze z określonym przesunięciem, długością i dostępem do plików. |
Can |
Pobiera wartość wskazującą, czy strumień obsługuje odczyt. |
Can |
Pobiera wartość wskazującą, czy strumień obsługuje wyszukiwanie. |
Can |
Pobiera wartość określającą, czy bieżący strumień może upłynął limit czasu. (Odziedziczone po Stream) |
Can |
Pobiera wartość wskazującą, czy strumień obsługuje zapisywanie. |
Capacity |
Pobiera długość strumienia (rozmiar) lub łączną ilość pamięci przypisanej do strumienia (pojemność). |
Length |
Pobiera długość danych w strumieniu. |
Position |
Pobiera lub ustawia bieżącą pozycję w strumieniu. |
Position |
Pobiera lub ustawia wskaźnik bajtów na strumień na podstawie bieżącej pozycji w strumieniu. |
Read |
Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował odczytać przed upływem limitu czasu. (Odziedziczone po Stream) |
Write |
Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował zapisać przed upływem limitu czasu. (Odziedziczone po Stream) |
Begin |
Rozpoczyna operację odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego). (Odziedziczone po Stream) |
Begin |
Rozpoczyna asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego). (Odziedziczone po Stream) |
Close() |
Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i dojścia plików) skojarzone z bieżącym strumieniem. Zamiast wywoływać tę metodę, upewnij się, że strumień jest prawidłowo usuwany. (Odziedziczone po Stream) |
Copy |
Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
Copy |
Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
Copy |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
Copy |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego tokenu anulowania. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
Copy |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
Copy |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu i tokenu anulowania. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
Create |
Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym. (Odziedziczone po MarshalByRefObject) |
Create |
Przestarzałe.
Przestarzałe.
Przestarzałe.
Przydziela obiekt WaitHandle. (Odziedziczone po Stream) |
Dispose() |
Zwalnia wszystkie zasoby używane przez Stream. (Odziedziczone po Stream) |
Dispose(Boolean) |
Zwalnia niezarządzane zasoby używane przez UnmanagedMemoryStream i opcjonalnie zwalnia zarządzane zasoby. |
Dispose |
Asynchronicznie zwalnia niezarządzane zasoby używane przez Stream. (Odziedziczone po Stream) |
End |
Czeka na ukończenie oczekującego odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego). (Odziedziczone po Stream) |
End |
Kończy asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego). (Odziedziczone po Stream) |
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
Flush() |
Zastępuje metodę Flush(), tak aby żadna akcja nie została wykonana. |
Flush |
Asynchronicznie czyści wszystkie dla tego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym. (Odziedziczone po Stream) |
Flush |
Zastępuje metodę FlushAsync(CancellationToken), tak aby operacja została anulowana, jeśli została określona, ale nie jest wykonywana żadna inna akcja. |
Flush |
Asynchronicznie czyści wszystkie dla tego strumienia, powoduje zapisanie wszystkich buforowanych danych na urządzeniu źródłowym i monitorowanie żądań anulowania. (Odziedziczone po Stream) |
Get |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
Get |
Przestarzałe.
Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
Get |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
Initialize(Byte*, Int64, Int64, File |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream przy użyciu wskaźnika do niezarządzanej lokalizacji pamięci. |
Initialize(Safe |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream w bezpiecznym buforze z określonym przesunięciem, długością i dostępem do plików. |
Initialize |
Przestarzałe.
Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
Memberwise |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
Memberwise |
Tworzy płytkią kopię bieżącego obiektu MarshalByRefObject. (Odziedziczone po MarshalByRefObject) |
Object |
Przestarzałe.
Zapewnia obsługę Contract. (Odziedziczone po Stream) |
Read(Byte[], Int32, Int32) |
Odczytuje określoną liczbę bajtów do określonej tablicy. |
Read(Span<Byte>) |
Odczytuje wszystkie bajty tego niezarządzanego strumienia pamięci do określonego zakresu bajtów. |
Read(Span<Byte>) |
Gdy przesłonięta w klasie pochodnej, odczytuje sekwencję bajtów z bieżącego strumienia i przechodzi pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po Stream) |
Read |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po Stream) |
Read |
Asynchronicznie odczytuje określoną liczbę bajtów do określonej tablicy. |
Read |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
Read |
Asynchronicznie odczytuje niezarządzane bajty strumienia pamięci do regionu pamięci. |
Read |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
Read |
Odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po Stream) |
Read |
Asynchronicznie odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu przez liczbę odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
Read |
Odczytuje bajt ze strumienia i rozwija pozycję w strumieniu według jednego bajtu lub zwraca -1, jeśli na końcu strumienia. |
Read |
Odczytuje |
Read |
Odczytuje bajty z bieżącego strumienia i przesuwa pozycję w strumieniu do momentu wypełnienia |
Read |
Asynchronicznie odczytuje |
Read |
Asynchronicznie odczytuje bajty z bieżącego strumienia, przechodzi pozycję w strumieniu do momentu wypełnienia |
Seek(Int64, Seek |
Ustawia bieżące położenie bieżącego strumienia na daną wartość. |
Set |
Ustawia długość strumienia na określoną wartość. |
To |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Write(Byte[], Int32, Int32) |
Zapisuje blok bajtów w bieżącym strumieniu przy użyciu danych z buforu. |
Write(Read |
Zapisuje blok bajtów do bieżącego niezarządzanego strumienia pamięci przy użyciu danych z podanego zakresu bajtów. |
Write(Read |
Po zastąpieniu w klasie pochodnej zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów. (Odziedziczone po Stream) |
Write |
Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów. (Odziedziczone po Stream) |
Write |
Asynchronicznie zapisuje sekwencję bajtów w bieżącym strumieniu, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania. |
Write |
Asynchronicznie zapisuje sekwencję bajtów w bieżącym strumieniu, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
Write |
Asynchronicznie zapisuje zakres bajtów w bieżącym strumieniu, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania. |
Write |
Asynchronicznie zapisuje sekwencję bajtów w bieżącym strumieniu, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
Write |
Zapisuje bajt do bieżącej pozycji w strumieniu plików. |
Copy |
Asynchronicznie odczytuje bajty z Stream i zapisuje je w określonym PipeWriterprzy użyciu tokenu anulowania. |
As |
Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wejściowy w środowisku uruchomieniowym systemu Windows. |
As |
Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wyjściowy w środowisku uruchomieniowym systemu Windows. |
As |
Konwertuje określony strumień na strumień dostępu losowego. |
Configure |
Konfiguruje, w jaki sposób będą wykonywane oczekiwania na zadania zwrócone z asynchronicznego jednorazowego użytku. |
Produkt | Wersje |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
UWP | 10.0 |
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: