One*_*unt 3 .net c# memory-management system.reactive
我在使用Reactive Extensions for .NET的WPF应用程序中有以下代码:
public MainWindow()
{
InitializeComponent();
var leftButtonDown = Observable.FromEvent<MouseButtonEventArgs>(this, "MouseLeftButtonDown");
var leftButtonUp = Observable.FromEvent<MouseButtonEventArgs>(this, "MouseLeftButtonUp");
var moveEvents = Observable.FromEvent<MouseEventArgs>(this, "MouseMove")
.SkipUntil(leftButtonDown)
.SkipUntil(leftButtonUp)
.Repeat()
.Select(t => t.EventArgs.GetPosition(this));
moveEvents.Subscribe(point =>
{
textBox1.Text = string.Format(string.Format("X: {0}, Y: {1}", point.X, point.Y));
});
}
Run Code Online (Sandbox Code Playgroud)
当鼠标在此对话框上移动时,内存是否会稳定增加?
读取代码,我希望moveEvents observable会在一段时间后包含大量的MouseEventArgs吗?或者这是以一种我不知道的聪明方式处理的?
不,内存使用量不应该稳定增加 - 为什么会这样?事件基本上流向订户; 他们没有在任何地方得到缓解.
Rx的意思是将事件推送给订户,订户可以选择如何处理它们.这不像是将事件添加到列表中,然后再进行检查.
(有很多方法可以在Rx中缓冲事件,但据我所知,你并没有使用它们.)