如何将 Rx Observable 与通用 EventHandler<T> 一起使用?
How to use Rx Observable with generic EventHandler<T>?
以下代码有效
var mouseTracker = Observable.FromEventPattern<MouseEventArgs>(form1, "MouseMove");
//for Form1_MouseMove(object sender, MouseEventArgs e)
但是如何让 Observable.FromEventPattern 接受 EventHandler 呢?像
var mouseTracker = Observable.FromEventPattern<EventHandler<StockQuote>>(_board, "QuoteUpdated");
//for board_QuoteUpdated(object sender, StockQuote stockQuote)
编辑
Gluck 的回答有效。我需要将 FromEventPattern 更改为 FromEvent。
var quoteObserver = Observable.FromEvent<EventHandler<StockQuote>, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);
没有通用类型EventArgs<T>
。
假设您需要为不遵循标准事件模式的事件创建一个可观察对象(在您的情况下,这意味着 StockQuote
类型不扩展 EventArgs
), 那么 FromEventPattern
就不能用了.
但您仍然可以使用 FromEvent
:
IObservable<StockQuote> obs = Observable.FromEvent<QuoteUpdatedDelegate, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);
以下代码有效
var mouseTracker = Observable.FromEventPattern<MouseEventArgs>(form1, "MouseMove");
//for Form1_MouseMove(object sender, MouseEventArgs e)
但是如何让 Observable.FromEventPattern 接受 EventHandler
var mouseTracker = Observable.FromEventPattern<EventHandler<StockQuote>>(_board, "QuoteUpdated");
//for board_QuoteUpdated(object sender, StockQuote stockQuote)
编辑
Gluck 的回答有效。我需要将 FromEventPattern 更改为 FromEvent。
var quoteObserver = Observable.FromEvent<EventHandler<StockQuote>, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);
没有通用类型EventArgs<T>
。
假设您需要为不遵循标准事件模式的事件创建一个可观察对象(在您的情况下,这意味着 StockQuote
类型不扩展 EventArgs
), 那么 FromEventPattern
就不能用了.
但您仍然可以使用 FromEvent
:
IObservable<StockQuote> obs = Observable.FromEvent<QuoteUpdatedDelegate, StockQuote>(
h => (_, sq) => h(sq),
eh => _board.QuoteUpdated += eh,
eh => _board.QuoteUpdated -= eh);