for (int k = 0; k < com.Length; k++)
            {
                ThreadClass tc = new ThreadClass();//里面主要是一个while循环
                Thread t1 = new Thread(new ParameterizedThreadStart(tc.Run));
                t1.Start(com[k].ToString());
                Thread.Sleep(50);
            }在while中需要调用方法,
被while调用的方法中也有调用其他的方法,
有时候数据会出现混乱,
如果用lock加锁,应该遵循什么规则,或者说在哪些地方应该加锁

解决方案 »

  1.   

    你可以尝试从循环开始时加锁,到循环结束时,
    这种处理,你可以考虑使用.net提供的线程池.或许能好点.
      

  2.   

    每次循环开始时,加锁;每次循环结束时,释放锁,当然只是打个比方。
    class ThreadClass
    {
        static int a;//共享资源
        static  object locks=new Object(); //令牌
        public void Run(string param)
        {
           while(……)
           {
               lock(locks)
               {
                  //操作a……
               }
           }
        }
    }