我正在试验RX,并遇到了以下问题(至少我认为它是一个问题)。下面的代码创建一个Observable,并订阅它两次。我想
订阅应独立运行
,因此下面的代码将在每个按键上输出两行,每个订阅一行。但事实并非如此,我总是只能得到一个订阅来处理一个特定的键笔划,半随机的第一个或第二个。为什么会发生这种情况?多个观察员的“推荐”方法是什么?
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();
}