多个线程对 List<T> 进行读写其中有一个逻辑是  List<T>.Find(x=> x.ID= XX)  ,如果有找到x ,那么就从 List 中 Remove, 这样的安全代码怎么写?

解决方案 »

  1.   

    list=list.Where(t=>t.ID!=XX).ToList();
      

  2.   

    不可能。必须(使用这个List<>)加锁。
      

  3.   

    .NET 4.0以上可以用System.Collections.Concurrent。
      

  4.   

    如果是net4版本,可以考虑已经实现线程安全的BlockingCollection<T> 做基础实现
    http://msdn.microsoft.com/zh-cn/library/dd267312.aspx非net4版本,你需要自己去加锁控制,或着google一下其他已经实现了线程安全的泛型集合类代码