for(...)
{
    Thread th = new Thread(new ThreadStart(WorkProc));
}启动了10个线程
在函数WorkProc中调用了一个函数fn1
我想让fn1在同一时间只能被一个线程调用
如果我用lock (this),能够达到我的要求吗?void fn1()
{
    lock (this)
    {
        ......
    }
}

解决方案 »

  1.   

            Dim m As New System.Threading.Mutex(False, "name")
            Try
                m.WaitOne()
                do something ...          Finally
                m.Close()
            End Try
      

  2.   

    我是当中有一段需要独占,其他时候各线程可以做其他的事情
    iseelxj:你用的Mutex和lock   有什么区别,效果一样吗
      

  3.   

    Mutex可以在不同进程之间同步,lock这能同步同一进程的不同线程
    其他的区别我也不是很清楚,好像差不多
    不过Mutex要显示的释放资源
      

  4.   

    里面的代码就是啦,^-^
                  //采子页
                    lock (this)
                    {
                        strNrHTML = PubFunction.GetPageHTML(zyurl, pageEncode); //获取子页HTML
                    }
      

  5.   

    查看一下MSDN的mutex类就知道怎么作了。
      

  6.   

    最好不要lock   (this),,msdn上面说的,这个this如果是实例化出来的对象,有可能会导致死锁,,