UnmanagedMemoryStream Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Önemli
Bu API, CLS uyumlu değildir.
Yönetilen koddan yönetilmeyen bellek bloklarına erişim sağlar.
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
- Devralma
- Devralma
- Türetilmiş
- Öznitelikler
Örnekler
Aşağıdaki kod örneği, sınıfını kullanarak yönetilmeyen bellekten okuma ve yazma işlemini UnmanagedMemoryStream gösterir. Yönetilmeyen bellek bloğu ayrılır ve sınıfı kullanılarak Marshal ayrılmıştır.
// 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();
}
}
Açıklamalar
Bu sınıf, mevcut akış tabanlı modeli kullanarak yönetilmeyen belleğe erişimi destekler ve yönetilmeyen bellekteki içeriklerin yığına kopyalanması gerekmez.
Not
Bu tür arabirimini uygular IDisposable , ancak aslında atılacak kaynağı yoktur. Bu, bunu doğrudan çağırarak Dispose() veya (C#'da) veya Using
(Visual Basic'te) gibi using
bir dil yapısı kullanarak yok saymak gerekmediği anlamına gelir.
Oluşturucular
UnmanagedMemoryStream() |
UnmanagedMemoryStream sınıfının yeni bir örneğini başlatır. |
UnmanagedMemoryStream(Byte*, Int64) |
Belirtilen konumu ve bellek uzunluğunu kullanarak sınıfının yeni bir örneğini UnmanagedMemoryStream başlatır. |
UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) |
Belirtilen konumu, bellek uzunluğunu, toplam bellek miktarını ve dosya erişim değerlerini kullanarak sınıfın yeni bir örneğini UnmanagedMemoryStream başlatır. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64) |
Belirtilen uzaklık ve uzunluk ile güvenli bir arabellekte sınıfının yeni bir örneğini UnmanagedMemoryStream başlatır. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) |
Belirtilen uzaklık, uzunluk ve dosya erişimi ile güvenli bir arabellekte sınıfının yeni bir örneğini UnmanagedMemoryStream başlatır. |
Özellikler
CanRead |
Akışın okumayı destekleyip desteklemediğini belirten bir değer alır. |
CanSeek |
Bir akışın aramayı destekleyip desteklemediğini belirten bir değer alır. |
CanTimeout |
Geçerli akışın zaman aşımına neden olup olmadığını belirleyen bir değer alır. (Devralındığı yer: Stream) |
CanWrite |
Akışın yazmayı destekleyip desteklemediğini belirten bir değer alır. |
Capacity |
Akış uzunluğunu (boyutu) veya bir akışa atanan toplam bellek miktarını (kapasite) alır. |
Length |
Bir akıştaki verilerin uzunluğunu alır. |
Position |
Akıştaki geçerli konumu alır veya ayarlar. |
PositionPointer |
Akıştaki geçerli konuma göre bir bayt işaretçisini alır veya bir akışa ayarlar. |
ReadTimeout |
Akışın zaman aşımına uğramadan önce ne kadar süreyle okumayı deneyeceğini belirleyen bir değeri milisaniye cinsinden alır veya ayarlar. (Devralındığı yer: Stream) |
WriteTimeout |
Akışın zaman aşımına uğramadan önce ne kadar süreyle yazmaya çalışacağını belirleyen bir değeri milisaniye cinsinden alır veya ayarlar. (Devralındığı yer: Stream) |
Yöntemler
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Zaman uyumsuz bir okuma işlemi başlatır. (Bunun yerine kullanmayı ReadAsync(Byte[], Int32, Int32) göz önünde bulundurun.) (Devralındığı yer: Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Zaman uyumsuz bir yazma işlemi başlatır. (Bunun yerine kullanmayı WriteAsync(Byte[], Int32, Int32) göz önünde bulundurun.) (Devralındığı yer: Stream) |
Close() |
Geçerli akışı kapatır ve geçerli akışla ilişkili tüm kaynakları (yuvalar ve dosya tanıtıcıları gibi) serbest bırakır. Bu yöntemi çağırmak yerine akışın düzgün bir şekilde atıldığından emin olun. (Devralındığı yer: Stream) |
CopyTo(Stream) |
Geçerli akıştan baytları okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyTo(Stream, Int32) |
Geçerli akıştan baytları okur ve belirtilen arabellek boyutunu kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream) |
Geçerli akıştan baytları zaman uyumsuz olarak okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream, CancellationToken) |
Geçerli akıştan baytları zaman uyumsuz olarak okur ve belirtilen iptal belirtecini kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream, Int32) |
Geçerli akıştan baytları zaman uyumsuz olarak okur ve belirtilen arabellek boyutunu kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Belirtilen arabellek boyutu ve iptal belirtecini kullanarak geçerli akıştan baytları zaman uyumsuz olarak okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
CreateObjRef(Type) |
Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur. (Devralındığı yer: MarshalByRefObject) |
CreateWaitHandle() |
Geçersiz.
Geçersiz.
Geçersiz.
Bir WaitHandle nesnesi ayırır. (Devralındığı yer: Stream) |
Dispose() |
Stream tarafından kullanılan tüm kaynakları serbest bırakır. (Devralındığı yer: Stream) |
Dispose(Boolean) |
UnmanagedMemoryStream tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır. |
DisposeAsync() |
tarafından Streamkullanılan yönetilmeyen kaynakları zaman uyumsuz olarak serbest bırakır. (Devralındığı yer: Stream) |
EndRead(IAsyncResult) |
Bekleyen zaman uyumsuz okumanın tamamlanmasını bekler. (Bunun yerine kullanmayı ReadAsync(Byte[], Int32, Int32) göz önünde bulundurun.) (Devralındığı yer: Stream) |
EndWrite(IAsyncResult) |
Zaman uyumsuz yazma işlemini sonlandırır. (Bunun yerine kullanmayı WriteAsync(Byte[], Int32, Int32) göz önünde bulundurun.) (Devralındığı yer: Stream) |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
Flush() |
Flush() Hiçbir eylem gerçekleştirilmesi için yöntemini geçersiz kılar. |
FlushAsync() |
Bu akış için tüm arabellekleri zaman uyumsuz olarak temizler ve arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur. (Devralındığı yer: Stream) |
FlushAsync(CancellationToken) |
FlushAsync(CancellationToken) Yöntemi geçersiz kılar, böylece işlem belirtilirse iptal edilir, ancak başka bir eylem gerçekleştirilmez. |
FlushAsync(CancellationToken) |
Bu akış için tüm arabellekleri zaman uyumsuz olarak temizler, arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur ve iptal isteklerini izler. (Devralındığı yer: Stream) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetLifetimeService() |
Geçersiz.
Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır. (Devralındığı yer: MarshalByRefObject) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
Initialize(Byte*, Int64, Int64, FileAccess) |
Yönetilmeyen bir bellek konumuna UnmanagedMemoryStream işaretçi kullanarak sınıfının yeni bir örneğini başlatır. |
Initialize(SafeBuffer, Int64, Int64, FileAccess) |
Belirtilen uzaklık, uzunluk ve dosya erişimi ile güvenli bir arabellekte sınıfının yeni bir örneğini UnmanagedMemoryStream başlatır. |
InitializeLifetimeService() |
Geçersiz.
Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır. (Devralındığı yer: MarshalByRefObject) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
MemberwiseClone(Boolean) |
Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur. (Devralındığı yer: MarshalByRefObject) |
ObjectInvariant() |
Geçersiz.
için Contractdestek sağlar. (Devralındığı yer: Stream) |
Read(Byte[], Int32, Int32) |
Belirtilen bayt sayısını belirtilen diziye okur. |
Read(Span<Byte>) |
Bu yönetilmeyen bellek akışının tüm baytlarını belirtilen bayt aralığına okur. |
Read(Span<Byte>) |
Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir. (Devralındığı yer: Stream) |
ReadAsync(Byte[], Int32, Int32) |
Geçerli akıştan zaman uyumsuz olarak bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir. (Devralındığı yer: Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Belirtilen bayt sayısını belirtilen diziye zaman uyumsuz olarak okur. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Geçerli akıştan zaman uyumsuz olarak bir bayt dizisi okur, okunan bayt sayısına göre akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Yönetilmeyen bellek akışı baytlarını bellek bölgesine zaman uyumsuz olarak okur. |
ReadAsync(Memory<Byte>, CancellationToken) |
Geçerli akıştan zaman uyumsuz olarak bir bayt dizisi okur, okunan bayt sayısına göre akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Geçerli akıştan en az bayt sayısını okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir. (Devralındığı yer: Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Geçerli akıştan zaman uyumsuz olarak en az sayıda bayt okur, okunan bayt sayısına göre akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
ReadByte() |
Akıştan bir bayt okur ve akışın içindeki konumu bir bayt ilerletir veya akışın sonundaysa -1 döndürür. |
ReadExactly(Byte[], Int32, Int32) |
|
ReadExactly(Span<Byte>) |
Geçerli akıştan baytları okur ve doldurulana kadar |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Geçerli akıştaki bayt sayısını zaman uyumsuz olarak okur |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Geçerli akıştaki baytları zaman uyumsuz olarak okur, doldurulana kadar |
Seek(Int64, SeekOrigin) |
Geçerli akışın geçerli konumunu verilen değere ayarlar. |
SetLength(Int64) |
Akışın uzunluğunu belirtilen değere ayarlar. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Write(Byte[], Int32, Int32) |
Arabellekten alınan verileri kullanarak geçerli akışa bir bayt bloğu yazar. |
Write(ReadOnlySpan<Byte>) |
Sağlanan bayt aralığındaki verileri kullanarak geçerli yönetilmeyen bellek akışına bir bayt bloğu yazar. |
Write(ReadOnlySpan<Byte>) |
Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akışa bir bayt dizisi yazar ve yazılan bayt sayısına göre bu akıştaki geçerli konumu ilerletir. (Devralındığı yer: Stream) |
WriteAsync(Byte[], Int32, Int32) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar ve yazılan bayt sayısına göre bu akıştaki geçerli konumu ilerletir. (Devralındığı yer: Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Zaman uyumsuz olarak geçerli akışa bir bayt aralığı yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
WriteByte(Byte) |
Dosya akışındaki geçerli konuma bir bayt yazar. |
Uzantı Metotları
CopyToAsync(Stream, PipeWriter, CancellationToken) |
baytlarını Stream zaman uyumsuz olarak okur ve bir iptal belirteci kullanarak belirtilen PipeWriteröğesine yazar. |
AsInputStream(Stream) |
Windows Mağazası uygulamaları için .NET'te yönetilen bir akışı Windows Çalışma Zamanı giriş akışına dönüştürür. |
AsOutputStream(Stream) |
Windows Mağazası uygulamaları için .NET'te yönetilen bir akışı Windows Çalışma Zamanı bir çıkış akışına dönüştürür. |
AsRandomAccessStream(Stream) |
Belirtilen akışı rasgele erişim akışına dönüştürür. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Zaman uyumsuz bir atılabilir öğeden döndürülen görevlerde awaits işleminin nasıl gerçekleştirildiğini yapılandıran. |
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin