Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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# 绑定列表引用_C#_Memory - Fatal编程技术网

C# 绑定列表引用

C# 绑定列表引用,c#,memory,C#,Memory,我正在使用C#、.NET3.5和Winforms进行开发。 我给网格分配了一些简单的字符串,并经常刷新这些信息。 我使用Ants分析应用程序。 下面的小代码会产生内存泄漏,因为对于我分配的每个字符串,WeakReference的实例都会永久保存在内存中 private void LoadData(string[] StatusInfo) { _bindingList.Clear(); for (int i = 0; i < StatusInfo.Le

我正在使用C#、.NET3.5和Winforms进行开发。 我给网格分配了一些简单的字符串,并经常刷新这些信息。 我使用Ants分析应用程序。 下面的小代码会产生内存泄漏,因为对于我分配的每个字符串,WeakReference的实例都会永久保存在内存中

private void LoadData(string[] StatusInfo) {            
    _bindingList.Clear();
    for (int i = 0; i < StatusInfo.Length -1; i=i+2){
        _bindingList.Add(new Item(StatusInfo[i], StatusInfo[i+1])); 
    }
}

public class Item {
    public Item(string label, string value) {
        this.Label = label;
        this.Value = value;
    }

    public string Label { get; set; }

    public string Value { get; set; }

}
private void LoadData(字符串[]状态信息){
_bindingList.Clear();
对于(int i=0;i

如果我对这些行进行注释,探查器将找不到WeakReference实例,如果它们处于活动状态,则很容易将每小时的WeakReference实例总计为20000个

您的
\u bindinglist
是什么类型?在检查泄漏之前,您是否在等待它超出范围?类型是BindingListNo,网格和bindinglist在范围内停留很长时间,只有内容经常刷新。但我发现,即使每次分配新字符串时都创建一个nwe绑定列表,这些WeakReference实例仍保留在内存中。不幸的是,这也没有帮助。@Traveler你到底在哪里使用WeakReference_bindingList.Add(新项(StatusInfo[i],StatusInfo[i+1]);如果创建了弱引用的弱引用(…),则创建常规引用。。这就是你想要做的吗?你所展示的代码中不太可能有错误<代码>绑定列表
不会自行创建
WeakReference
s。更可能的情况是,您将列表绑定到的组件(如绑定事件处理程序等)会给您带来麻烦。您使用的是Winforms还是WPF?