Tek bir PC'de ağ tipi bir akış benzetmek istiyorum.Ayrı yazma ve okuma konumlarına sahip akış
Bunu, birinden diğerine yazmak için diğerine yazacak 2 temel akışa sahip bir Stream
oluşturarak yaptım.
Bu sınıfın 2 akışını değiştirerek 2 örneğini oluşturuyorum. Şu anda 2 temel akım olarak MemoryStream
s kullanıyorum.
Şu anki sorunum, X baytını MemoryStream
'a yazıyorsa, konum X olacaktır ve daha sonra bir Read
yapmam, veri almam, çünkü akışın sonunda olduğumdur.
Genellikle bir çift okuma/yazma yapacağım (bu yüzden her yazının ardından sadece 0'ı sıfırlayamıyorum) Stream
bu davranışı almak için kullanabilir miyim?
Etkili Bir akış biçiminde yazabileceğim ve okuyabileceğim bir bayt kuyruğu istiyorum.
yani (görmezden fiili yöntem argümanlar) O (yine benim durumumda) aslında düşündüğümden çok basittirMyStream.Write({ 1, 2, 3, 4, 5, 6 });
MyStream.Write({ 7, 8 });
MyStream.Read(3) // Returns { 1, 2, 3 }
MyStream.Read(4) // Returns { 4, 5, 6, 7 }
Sadece sorun bu kod parçacığı güvenli değil ise. Bu kodu birden çok ileti dizisiyle kullanıyorsanız, hiçbir şeyin aynı anda okuma ve yazma denemesi yapmayacağından emin olmak istersiniz. Okuma ve Yazma yöntemlerinin üstünde [iş parçacığı] güvenliğini sağlamak için [MethodImpl (MethodImplOptions.Synchronized)] ekleyebilirsiniz. – Qubei