【发布时间】:2010-06-14 20:11:39
【问题描述】:
我在 WPF 应用程序中使用 Reactive Extensions for .NET 有以下代码:
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));
});
}
当鼠标在此对话框上移动时,内存是否会稳定增加?
阅读代码,我预计 moveEvents observable 将在一段时间后包含大量 MouseEventArgs?或者这是以我不知道的某种聪明方式处理的?
【问题讨论】:
-
请注意,订阅者仅在订阅后接收新事件,因此旧事件不会保存在任何地方。
标签: c# .net memory-management system.reactive