好像lock或monitor都不能锁public定义的类型啊,有什么好方法么?

解决方案 »

  1.   

    private static readonly object Obj = new object; 
    lock(obj)
      

  2.   

    我调用一个com组件,因为是非托管资源不能重复实例化,所以在最外面实例一个public static com类供程序中各个类调用,但是我发现当有多个线程同时调用com类时总是报错,我在调用的地方加锁又不好使,我该怎么办呢?
      

  3.   


    你可以用变通的方法,设置一个public static int a=0 的全局变量,或者session中也可以,当有实例调用这个com的时候,就设置a=1,所有调用com的地方,先判断a的值,a=0才调用,a=1,就让他先sleep几秒钟
      

  4.   

    楼上说的有道理,但是比如有五个线程同时调用这个com组件,有一个执行,其余在等待(我用while(true)不停的判断条件,需要时间快,不能睡太久),当一个执行完后,怎么再让那四个线程分开执行呢?当条件成立时,那四个线程会同时通过验证啊?
      

  5.   


    正解已出!!
    看看微软代码吧,也都是这么操作的,为需要加锁的对象定义一个static的object用来枷锁!
      

  6.   

    楼上说的可以,但我想锁public型com组件,用lock时老出错啊
      

  7.   


    无语了...
    老大,不是直接让你锁com组件的实例,而是新建个对象,完全就是为了
    锁而创建的。。