有一百个网站,建十个线程,同步打开这一百个网站不能打开多次),(如何实现,给提示?

解决方案 »

  1.   

    lock(一个引用类型实例)
    {
       // 同步的代码
    }
      

  2.   

     public void open(string str)
            {
                lock (str)
                {
                    webBrowser1.Navigate(str);
                }
            }
    这样可以吗?
      

  3.   

    str 不合适,最好定义个全局变量
    private static object obj = new object();public void open(string str)
      {
      lock (obj)
      {
      webBrowser1.Navigate(str);
      }
      }
      

  4.   


    private object someLock = new object();public void someMethod1( .... ) {
        lock (someLock) {
            //your business...
        }
    }根据方法业务上的含义不同, 可以某几个方法要互相排斥, 那么他们就lock同一个object. 不是互相排斥的方法, lock不同的object.这样可以做到尽可能的线程运行.  (比无脑的lock(this)要好)
      

  5.   

    LOCK是同步你要的是并发吧。
    并发打开,就不能做到同步,同步的话性能大大降低了,
    你可以先把100个站分配一下,然后给10条线程,这样就不会重复打开了。
      

  6.   

    不要直接用线程访问网站,而是先把100个网址加入一个队列中,假设是LinkedList<string> lstUrls;然后每个线程从lstUrls中取出url操作:string strUrl;
    lock(lstUrls)
    {
        strUrl=lstUrls.First.Value;
        lstUrls.RemoveFirst();
    }...//这里可以操作strUrl了,
      

  7.   

    9楼忘了判断lstUrls是否空,如果没有内容,线程可以直接返回,如果网站数目不定而且动态增加,用lock就不行了,需要用信号量,