if you want to lock the method , use lock is perfect , but if you want to share a object for all , use Monitor replace it 

解决方案 »

  1.   

    Queue oQueue=new Queue();
    ......
    Monitor.Enter(oQueue);
    ......//现在oQueue对象只能被当前线程操纵了
    Monitor.Exit(oQueue);//释放锁
      

  2.   

    我不是在多个线程里操作一个同一个对象.
    我的疑惑是在:为一个类创建多个对象实例后,每个对象拥有一个线程,如果每个对象调用同一个方法,如果是static method肯定要加锁吧,如果不是static,是否需要对这个方法method加锁?
      

  3.   

    如果是static的话,会自动的实现为thread safe的,不用担心。其他的code如果确实会被多个thread使用到,则一定要实现他的同步锁。我认为用lock(this)是最好的。to redbb(....Dotneter....) :
    我看书上说lock和Monitor其实是一样的东西,只是lock自动实现了Monitor的Enter和Exit.
      

  4.   

    各位,请先直接回答我的疑惑,行不?多个线程里操作同一个对象的方法,要加锁.我的疑惑是在:为一个类创建多个对象实例后,每个对象拥有一个线程,如果每个对象调用同一个方法,是否需要对这个方法method加锁?
      

  5.   

    to: turnmissile(会翻跟头的导弹) ( )
    自己写的class的static method 不需要lock吗?
      

  6.   

    >>为一个类创建多个对象实例后,每个对象拥有一个线程,如果每个对象调用同一个方法,是否需要对这个方法method加锁?我答过一次了,不需要。代码是拿来执行的,是READONLY, 因此不需要保护,
    只有在多线程修改同一个数据时,才需要对数据进行保护。
    你现在访问的根本不是同一个数据,就不需要保护。