4
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();
}