2013-05-09 12 views
6

Bir dosyaya, başka bir iş parçacığı aracılığıyla belirli bir miktarda veri yazıldığını bildirdikten sonra okumak istiyorum.

Samimi girişimim, Yazma sınıfım ile birlikte yazdığı BinaryWriter'den sonra OnNext'i çağıran bir Reaktif Konu oluşturmaktı. Bu BinaryWriter bir FileStream kullanıyor.
Bu işe yaramaz gibi gözüküyor. Yazımın temizlendiğini garanti etmiyorum.

El ile çağrı yapmayı tercih etmem. Bunu yapmak için mevcut bir yolu var mı?FileStream ile yazılan verilerin diskte olduğunu bildiren nasıl bildirilir?

+4

5.000.000 soru numarasını sorduğunuz için tebrik ederiz! – dasblinkenlight

+1

[Dosya Sistemi Gözcüsü] (http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx) yardımcı olur mu? – Elias

+0

5.000.000 ya da sonraki 6.000.000 ya da ... numaralı soruları kimin sorduğu için ödül yok mu? Bence 100 puanlık itibara sahip olmalı. –

cevap

1

Daha geniş bir düzeyde, iş parçacıkları arasındaki iletişimleri soruyorsunuz. Tercihlerinize ve ortamınıza bağlı olarak bunu halletmenin birkaç yolu vardır.

Henüz yapmadıysanız, POSIX iş parçacığı here ve here'a bakın. Koşullu değişkenleri veya semaforları tartışan bölümlere dikkat edin.

NET framework de bakan değer bir System Threading kütüphanesi vardır. Özellikle, hem semafor hem de bir monitör sınıfı var. Biri ya da diğeri, bu durumda ihtiyacınız olan çözüm olabilir.

Son olarak, InotifyPropertyChanged arayüzü ve/veya olayları düşünün. Bu bağlamda, okuyucudan ilerlemeyi bildirmek için alternatif bir yoldur.

Genel olarak, ben senin yazar parçacığı bir olay bildirimi değişti atmak veya X bayt yazdıktan sonra bir semafor yükseltmek zorunda öneriyoruz. Oradan okuyucu ya olayı yakalayacak ya da semaforu izleyecek ve buna göre hareket edecek.

Ben kilitleme olasılıkla dosyaya eşzamanlı erişimi engellemek olacağından monitör sınıfı senin için de yararlı olmayacaktır şüpheli.

İlgili konular