Her 100 milisaniyede bir yeni bir değer pompalayan bir rasgele sayılar eşzamansız akışı oluşturmak istiyorum. Eğer denemek ve bu çalıştırırsanız, sadece tekrar tekrar aynı değeri tekrar tutar fark edeceksiniz Gözlemlenebilir.Defer - tam olarak ne yaptığını açıklığa kavuşturmak gerekiyor
var random = new Random();
Observable.Start(() => random.Next())
.Delay(TimeSpan.FromMilliseconds(100))
.Repeat()
.Subscribe(Console.WriteLine);
: çözüm ile gelip çalışırken, benim ilk girişimi böyle bir şey görünüyordu. Tamam, sanırım Repeat'in nasıl çalıştığını yanlış anladım. biraz etrafı oynadıktan sonra, ben bu geldi ve işe yaradı:
var random = new Random();
Observable.Defer(()=> Observable.Start(() => random.Next()))
.Delay(TimeSpan.FromMilliseconds(100))
.Repeat()
.Subscribe(Console.WriteLine);
Yani ertele aslında ne yaptığını anlamak için MSDN belgelerine gitti ve bu da diyor ki:
Yeni bir gözlemci abone olduğunda, gözlemlenebilir fabrika 'u çağıran gözlenebilir bir sekans döndürür. Benim kod örneğinde, ben sadece bir kere gözlemlenebilir abone ediyorum, öyleyse niye görünüşte defalarca
Observable.Start(...)
başlatıyordur:
benim karışıklık bu sanırım? Yoksa Repeat()
yanlış anlaşılıyor muyum? Herhangi bir açıklama harika olurdu.