2014.2.24 带参数多线程实例

2014.2.24 带参数多线程实例

定义全局变量

ParameterizedThreadStart ParaStart; //表示带参数的多线程

Thread[] tds = new Thread[10]; //运行时再实例化

static object objLock = new object(); //多线程锁

//运行中

ParaStart = new ParameterizedThreadStart(ReadPic);

for (int i = 0; i < 10; i++) //创建10个线程处理照片

{

  tds[i] = new Thread(ParaStart); //初始化每个线程

  tds[i].Start(i); //执行

}

public void ReadPic(object num)

{

   int cur = (int)num;

   for (int i = 0; i < pts[cur].Count; i++)

  {

      string path = pts[cur][i].ToString();

      string name = path.Substring(path.LastIndexOf("\") + 1);

      lock (objLock) //此多线程锁可防止返回的s与调用的guline不一致的情况发生

      {

      byte[] imageData = TransPIc(path);

      MemoryStream ms = new MemoryStream(imageData);

      Image img = Image.FromStream(ms);

      imgs.Add(img);

      }

   }

}