Dam*_*aib 6 c# mvvm reactiveui
我最近重构了MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码以使用ReactiveList
s,派生列表和ObservableAsPropertyHelper
s。完成后,我注意到该应用程序的内存使用量从100MB增加到550MB(在完全相同的情况下,具有相同的数据和功能)。
我有来自同一个类的大量对象(约3000个),并且使用VS的诊断工具,我注意到该类的OAPH(它们有5个)占用了大量内存。最初,我假设线程问题,所以我决定尝试在测试应用程序中重现该问题。
为此,我创建了一个ViewModel:
public class ItemViewModel : ReactiveObject
{
private ObservableAsPropertyHelper<bool> myVar1;
public bool MyProperty1
{
get { return myVar1.Value; }
}
public ItemViewModel()
{
myVar1 = Observable.Return(false).ToProperty(this, x => x.MyProperty1);
}
}
Run Code Online (Sandbox Code Playgroud)
为了简便起见,我删除了另外三个完全相同的OAPH。
我的主要ViewModel如下所示:
public class MainViewModel : ReactiveObject
{
public IReactiveList<ItemViewModel> Items { get; private set; }
public MainViewModel()
{
var items = new List<ItemViewModel>();
for (int i = 0; i < 3000; i++)
{
items.Add(new ItemViewModel());
}
Items = new ReactiveList<ItemViewModel>(items);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是此应用程序中的全部内容。如果我运行它,它将使用35MB。如果我删除的构造函数中的代码ItemViewModel
,则仅使用11.5MB。因此,似乎重现了我的高内存使用率。
我的问题是:我做错什么了吗?ReactiveUI可以处理“很多”项目吗?