C# 理解使用Rx扩展,但这是什么推送模式?

C# 理解使用Rx扩展,但这是什么推送模式?,c#,c#-4.0,system.reactive,C#,C# 4.0,System.reactive,这是我的代码,用于监视鼠标在mouseleftbuttondown和mouseleftbuttonup之后的移动: var downs = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonDown"); var ups = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonUp"); var moves =

这是我的代码,用于监视鼠标在mouseleftbuttondown和mouseleftbuttonup之后的移动:

var downs = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonDown");
var ups = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonUp");

var moves = Observable.FromEventPattern<MouseEventArgs>(this, "MouseMove").SkipUntil(downs).TakeUntil(ups).Repeat();
moves.Subscribe(me => {
     Point pt = me.EventArgs.GetPosition(null);
     tbPoints.Text += "X :" + pt.X + " Y :" + pt.Y + "\t";
});
var downs=Observable.FromEventPattern(这是“MouseLeftButtonDown”);
var ups=可观察的。FromEventPattern(这是“MouseLeftButtonUp”);
var moves=Observable.FromEventPattern(这是“MouseMove”).SkipUntil(向下)。TakeUntil(向上)。Repeat();
移动。订阅(me=>{
点pt=me.EventArgs.GetPosition(null);
tbPoints.Text+=“X:+pt.X+“Y:+pt.Y+”\t”;
});

一切都很顺利,但我不明白的是,这里面到底是什么?我读到IEnumerable遵循拉模式,而IObservable遵循推模式。此代码中的push是什么?

事件是此代码中的push。当事件发生时,所有转换为observable的各种鼠标事件都会将事件数据推送到代码中

当某个数据源告诉数据消费者这里有更多数据需要处理时,这是推送模式,当你向数据源询问数据时,这是拉模式。事件是推送模型的第一类示例


在Subscribe方法之后,您的下一行代码将开始执行,因为使用Subscribe,您已要求推送数据源在任何时候(在本例中是鼠标事件)可用时告诉您的代码(这将在将来发生,因此Subscribe不会阻塞)

事件在此代码中推送。当事件发生时,所有转换为observable的各种鼠标事件都会将事件数据推送到代码中

当某个数据源告诉数据消费者这里有更多数据需要处理时,这是推送模式,当你向数据源询问数据时,这是拉模式。事件是推送模型的第一类示例

在Subscribe方法之后,您的下一行代码将开始执行,因为使用Subscribe时,您已要求推送数据源在任何时候(在本例中为鼠标事件)有可用数据时告知您的代码(这将在将来发生,因此Subscribe不会阻塞)