处置ObservableCollection<>

时间:2014-03-17 13:41:41

标签: c#-4.0 observablecollection idisposable

我们是否需要在调度容器类时将每个项目都放在ObservableCollection内?或者我们可以只处理容器类,它将处理该类中的所有对象。比如说:

  public class SomeClass : IDisposable
  {

      private ObservableCollection<JobItem> jobItemTemplates = new ObservableCollection<JobItem>(); 
      public ObservableCollection<JobItem> JobItemTemplates
      {
        get 
        {
            return this.jobItemTemplates; 
        }

        set
        {
            if (this.jobItemTemplates != value)
            {
                this.jobItemTemplates = value;
                this.OnPropertyChanged("JobItemTemplates");
            }
        }
    }
 }

  protected override void OnDispose()
  {        
    GC.SuppressFinalize(this);
    if (this.jobTreeItemViewModelItem != null)
    {
        foreach(JobTreeItemViewModel  item in this.jobTreeItemViewModelItem)
        {
             item.Dispose();
        }
        this.jobTreeItemViewModelItem.Clear();
     }

     this.jobTreeItemViewModelItem = null;
    }
 }

1 个答案:

答案 0 :(得分:2)

ObservableCollection没有实现IDisposable,也没有检查项目的类型。因此,您必须手工处理这些物品(或为一次性物品实施IDisposable容器)