日期:2014-05-19  浏览次数:20536 次

报错:索引超出了数组界限
在写一个多线程操作的时候,根据界面输入的控制数来开启线程,但是报错了,百度过,google过,最后还是不知道错在哪里?请各位帮忙解决下问题!
代码:
private   void   Thread()
{
int   xc=Convert.ToInt32(TextBox3.Text);
      ThreadStart   startDownLoad=new   ThreadStart(dlp);//线程起始设置:即每个线程都执行DownLoad(),注意:DownLoad()必须为不带有参数的方法
      //Thread   downloadThread=new   Thread(startDownLoad);//实例化要开启的新类
      //downloadThread.Start();//开启线程]
      Thread[]   downloadThread;//声名下载线程,这是C#的优势,即数组初始化时,不需要指定其长度,可以在使用时才指定。这个声名应为类级,这样也就为其它方法控制它们提供了可能
      downloadThread=new   Thread[xc];//为线程申请资源,确定线程总数,这里为3个线程
for(int   i=1;i <xc+1;i++)//开启指定数量的线程数
{
downloadThread[i]=new   Thread(startDownLoad);//指定线程起始设置
downloadThread[i].Start();//逐个开启线程
}

------解决方案--------------------
for(int i=1;i <xc+1;i++ )改为 for(int i=0;i <xc;i++)
或者 downloadThread=new Thread[xc] 改为 downloadThread=new Thread[xc+1]