Я экспериментирую с RX и сталкиваюсь со следующей проблемой (по крайней мере, я воспринимаю это как проблему). Следующий код создает наблюдаемую и подписывается на нее дважды. Я думал, что подписки должны действовать независимо , поэтому код ниже выведет две строки, по одной для каждой подписки, при каждом нажатии клавиши. Но это не тот случай, я всегда получаю только одну подписку для обработки определенного нажатия клавиши, полуслучайно первой или второй. Почему это происходит и каков «рекомендуемый» способ сделать несколько наблюдателей?
static IEnumerable<ConsoleKeyInfo> KeyPresses()
{
for (; ; )
{
var currentKey = Console.ReadKey(true);
if (currentKey.Key == ConsoleKey.Enter)
yield break;
yield return currentKey;
}
}
static void Main()
{
var timeToStop = new ManualResetEvent(false);
var keypresses = KeyPresses().ToObservable();
keypresses.Subscribe(key => Console.WriteLine(key.Key + "1"),
() => timeToStop.Set());
keypresses.Subscribe(key => Console.WriteLine(key.Key + "2"),
() => timeToStop.Set());
timeToStop.WaitOne();
}