Reactive Extensions内存使用情况

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吗?或者这是以一种我不知道的聪明方式处理的?

Jon*_*eet 5

不,内存使用量不应该稳定增加 - 为什么会这样?事件基本上流向订户; 他们没有在任何地方得到缓解.

Rx的意思是将事件送给订户,订户可以选择如何处理它们.这不像是将事件添加到列表中,然后再进行检查.

(有很多方法可以在Rx中缓冲事件,但据我所知,你并没有使用它们.)