Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反应UI内存使用_C#_Mvvm_Reactiveui - Fatal编程技术网

C# 反应UI内存使用

C# 反应UI内存使用,c#,mvvm,reactiveui,C#,Mvvm,Reactiveui,我最近重构了一个MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码,以使用ReactiveLists、派生列表和observativePropertyHelpers。完成后,我注意到该应用程序的内存使用量从100MB增加到550MB(在完全相同的情况下,使用相同的数据和功能) 我从同一个类中有大量(~3000)个对象,并且使用VS中的诊断工具,我注意到这个类中的OAPH(它们是5个)使用了大量内存。起初,我假设线程有问题,所以我决定尝试在测试应用程序

我最近重构了一个MVVM应用程序以使用ReactiveUI。基本上,我已经更改了ViewModels中的许多代码,以使用
ReactiveList
s、派生列表和
observativePropertyHelper
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);
    }
 }
public类ItemViewModel:ReactiveObject
{
私人可观察财产帮助myVar1;
公共房屋MyProperty 1
{
获取{return myVar1.Value;}
}
公共项目视图模型()
{
myVar1=可观察的.Return(false).ToProperty(这,x=>x.MyProperty1);
}
}
我已经删除了另外3个与brievity完全相同的OAPH

我的主视图模型如下所示:

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);
    }
}
public类MainViewModel:ReactiveObject
{
公共IReactiveList项{get;private set;}
公共主视图模型()
{
var items=新列表();
对于(int i=0;i<3000;i++)
{
添加(新的ItemViewModel());
}
项目=新的反应列表(项目);
}
}
这就是这个应用程序的全部内容。如果我运行它,它将使用35MB。如果我删除
ItemViewModel
的构造函数中的代码,它只使用11.5MB。所以它似乎重现了我的高内存使用率


我的问题是:我做错什么了吗?ReactiveUI能处理这么多的项目吗?

你得到了答案吗?我们遇到了同样的问题。还没有。Github上的问题仍然存在: