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