//线程里
lock(this)
{
     //访问集合
}

解决方案 »

  1.   

    取数据一般不用加锁,将数据放到内存,如List,多个线程根据索引取出数就行
      

  2.   

    加个锁
    lock(对象)
    {
    代码块
    }
    注意被lock的对象,必须都是同一个对象,一般声明成static,避免被实例化多次导致每个线程锁定的不是同一个对象
      

  3.   

    不加锁的话,需要用线程安全的集合吧
    普通list在取数和remove之间,就有可能出现脏数据
      

  4.   

    现在C#已经封装得很无脑了        public void SynOl(List<accountlist> lstAcc)
            {
                Parallel.ForEach(lstAcc, (acc) =>
                {
                    new GetSellerLstForOl().GetSellerListCall(acc, 1);
                });
            }上面那个方法就是一个账号集合,然后多线程调用返回它的数据,每个账号一个线程。当然这里是不用考虑线程安全或者什么脏数据问题,你的需求自己看着办。
      

  5.   


    new GetSellerLstForOl().GetSellerListCall(acc, 1); 这个是什么 怎么看不懂啊  ,求代码
    你手里有100个地址,有10个人帮你送货,你准备怎么办?  ---  就是这样啊 求代码  
      

  6.   


    new GetSellerLstForOl().GetSellerListCall(acc, 1); 这个是什么 怎么看不懂啊  ,求代码
    你手里有100个地址,有10个人帮你送货,你准备怎么办?  ---  就是这样啊 求代码  new GetSellerLstForOl().GetSellerListCall(acc, 1);是我们自己的自定义方法你不用管,你要看的是Parallel.ForEach假如你有100个地址,那么放进一个List<string>里,我们暂且起名为lstUrl,那么就是写成        public void SynOl(List<accountlist> lstAcc)
            {
                Parallel.ForEach(lstUrl, (url) =>
                {
                    你的操作
                });
            }这里实现的效果是你有多少个地址就开多少个线程跑。