特 别是 IsSynchronized 和 SyncRoot 属性应该如何实现啊???同步(线程安全)什么概念啊,那位兄弟知道????希望详细讲解原理!!!

解决方案 »

  1.   

    继承CollectionBase 
    不要直接继承ICollection
      

  2.   

    我不是继承,我自己写了个类,要实现ICollection接口
      

  3.   

    你的类必须继承别的类?
    如果不是,那继承CollectionBase类是实现ICollection最方便的方法
      

  4.   

    如果是的话,可以在类里面放一个ArrayList
    Add/Remove都在这个ArrayList进行
    这样的话关于IsSynchronized和SyncRoot属性就可以直接返回ArrayList的IsSynchronized和 SyncRoot属性
      

  5.   

    你不继承ICollection,怎么实现ICollection接口。
    using System;
    using System.Collections;
    namespace ICDemo
    {
      public class MyCollection:ICollection
      {
        private string[] _list;
        private object _root;
      public MyMyCollection()
      {
         _list=new string[3]{"1","2","3"}; 
      }
      public bool IsSynchronized
      {
         get
           {
               return true;
           }
      }
      public int Count
      {
        get
        {
        return _list.Length;
        } 
       }
     public void CopyTO(Array array,int index)
     {
        _list.CopyTo(array,index);
     }
     public object SyncRoot
     {
       get
         {
           return _root;
          }
     }
    public IEnumerable GetEnumerator()
    {
      return _list.GetEnumerator()
    }
    }}
      

  6.   

    两个线程同时操作, 显然可能造成某个线程正在进行依赖于Obj的操作时,另一个线程却修改了Obj.这就会造成混乱.所以我们需要对Obj进行"锁定".
    互斥和同步是相反的.互斥是不能同时访问,不然会死锁 .
    如果继承CollectionBase就具有同步操作的能力了.