获取/设置LINQ BindingList中的内存泄漏<t>属性

时间:2016-09-09 19:33:09

标签: c# linq memory-leaks

我们试图阻止的程序中存在内存泄漏。

我们已经隔离了表单,这个表单有几个BindingList属性。

目前,这些属性采用以下格式编写:

private BindingList<DataModel1> _dataModel1List;

public BindingList<DataModel1> DataModel1List
{
    get
    {
        var temp = from r in dbo_datamodel1 orderby r.label select r;
        _dataModel1List= ((IListSource)temp).GetList() as BindingList<DataModel1>;
        return _dataModel1List;
    }
    set
    {
        _dataModel1List= value;
    }
}

我不是BindingList课程的专家,但在我看来,每次调用时我们都会得到一组新的数据。

此外,如果我们使用 getter 获取数据,然后使用 setter 进行设置,看起来我们将覆盖之前使用 getter 传入value

这可能是我们内存泄漏的根源吗?我在这一个表单上计算了这些BindingList属性中的52个。

如果我要像下面那样重写它,是否会修复内存泄漏或导致BindingList出现问题?我特别关注 setter 中的 Clear()调用。

private BindingList<DataModel1> _dataModel1List;

public BindingList<DataModel1> DataModel1List
{
    get
    {
        if (_dataModel1List== null)
        {
            _dataModel1List= new BindingList<DataModel1>(
                (from r in dbo_datamodel1
                 orderby r.name
                 select r).ToList());
        }
        return _dataModel1List;
    }
    set
    {
        if (_dataModel1List!= null)
        {
            _dataModel1List.Clear();
        }
        _dataModel1List= value;
    }
}

由于有很多这些属性可能导致内存泄漏,我想确保在我完全进行此更改之前不会导致问题。

0 个答案:

没有答案
相关问题