我正在WinForms中学习Rx,并拥有以下代码:
// Create an observable from key presses, grouped by the key pressed
var groupedKeyPresses = Observable.FromEventPattern<KeyPressEventArgs>(this, "KeyPress")
.Select(k => k.EventArgs.KeyChar)
.GroupBy(k => k);
// Increment key counter and update user's display
groupedKeyPresses.Subscribe(keyPressGroup =>
{
var numPresses = 0;
keyPressGroup.Subscribe(key => UpdateKeyPressStats(key, ++numPresses));
});
Run Code Online (Sandbox Code Playgroud)
这可以完美地工作/运行,在KeyPress事件中流,按键推送组,然后跟踪每个键被按下的次数,并UpdateKeyPressStats使用键和新的按键数调用方法.装运它!
但是,FromEventPattern由于对事件的字符串文字引用,我不是签名的粉丝.所以,我想我会尝试一下FromEvent.
// Create an observable from key presses, grouped by the key pressed
var groupedKeyPresses = Observable.FromEvent<KeyPressEventHandler, KeyPressEventArgs>(h => this.KeyPress += h, h => this.KeyPress -= h)
.Select(k => …Run Code Online (Sandbox Code Playgroud)