Я читаю IntroToRx, и у меня возникают проблемы с образцом кода. Вот общая сумма моего кода:Реактивные расширения: почему этот выход немедленно?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Disposables;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace LearningReactiveExtensions
{
public class Program
{
static void Main(string[] args)
{
var observable = Observable.Interval(TimeSpan.FromSeconds(5));
observable.Subscribe(
Console.WriteLine,
() => Console.WriteLine("Completed")
);
Console.WriteLine("Done");
Console.ReadKey();
}
}
}
Если я понимаю книгу правильно, это должно написать последовательность чисел на консоль, один раз каждые пять секунд навсегда, так как я никогда не Dispose()
последовательности.
Однако, когда я запускаю код, все, что я получаю, это «Готово» в конце. Нет номеров, нет «завершено», ничего, кроме «Готово».
Что я здесь делаю неправильно?
Это не было то, что мне не хватало терпения; скорее я предположил, что «Готово» никогда не будет отображаться, если последовательность не завершится, например. никогда в этом примере. Основной недостаток в моем понимании. –
Я немного волновался, что привел пример с предложением Done и Completed. Если вы замените слово «Готово» на «Подписка», тогда вы будете более точными. Идеально также захватывать подписку, а затем удалять ее после «ReadKey()». –