可观察的FromEventPattern转换问题

时间:2019-05-14 15:38:17

标签: c# observable reactive

我想聚合卡刷卡的PreviewKeyUp事件,但是一旦我在基本设置上应用了任何聚合转换,它就会停止工作。不知道我在做什么错。

//base setup to wrap event works perfectly 
 var x = Observable.FromEventPattern<KeyEventArgs>(
               h => this.PreviewKeyUp += new System.Windows.Input.KeyEventHandler(h),
               h => this.PreviewKeyUp -= new System.Windows.Input.KeyEventHandler(h))
               .Select(a =>
               {
//In house function
                   return TranslateKey(a.EventArgs.Key);
               });

x.Subscribe(s => Console.WriteLine("seems I'm working: " + (s)));

输出: 似乎我在工作:5 似乎我在工作: 似乎我在工作:1 似乎我在工作:2 似乎我在工作:3 似乎我在工作:5 似乎我在工作:7 似乎我在工作:7 似乎我在工作:= 似乎我在工作:5 似乎我在工作:5 似乎我在工作:5 似乎我在工作:5 似乎我在工作:5 似乎我在工作:= 似乎我在工作:6 似乎我在工作:5 似乎我在工作:4 似乎我在工作:3 似乎我在工作:3 似乎我在工作:2 似乎我在工作:8 似乎我在工作:?

但是一旦在下面的转换中应用(因为我正在交换一张卡,并且它会产生多个keyup事件,并且我想将它们放在一起并生成一个字符串),它将停止工作,不确定为什么

var x = Observable.FromEventPattern<KeyEventArgs>(
               h => this.PreviewKeyUp += new System.Windows.Input.KeyEventHandler(h),
               h => this.PreviewKeyUp -= new System.Windows.Input.KeyEventHandler(h))
               .Select(a =>
               {
                   return TranslateKey(a.EventArgs.Key);
               })
               .ToList().Select(s => string.Concat(s));
 x.Subscribe(s => Console.WriteLine("seems I'm working: " + (s)));

0 个答案:

没有答案