关于多线程技术,麻烦高手指教!
我写的程序主要是以下功能:获取某FTP服务器下某一目录的规定条件的文件,假设有10个符合要求,需要下载,那么我下载数据的过程在一个单独的类中完成,这个类叫做downone,它包含了一些下载文件所需的文件地址、用户名、密码等信息,还包含一个方法叫makeDown(),它实现具体的下载功能;
在主程序中我使用以下方法进行线程启动:
Thread[] myth = new Thread[downFiles.Count]; \\设置线程变量数组用于后期监视,downFiles.Count为需要下载的文件数量;
List<downone> downOneList = new List<downone>();
for (int i = 0; i < myth.Length;i++ ) //对每个筛选完成后的文件进行下载
{
Uri downUri = new Uri(serveUri, downFiles[i]);
downone mydown = new downone(downUri,downFiles[i],singleSite[2],singleSite[3],singleSite[9]); \\构造函数,为downone类赋初值
downOneList.Add(mydown);
myth[i] = new Thread(new ThreadStart(mydown.makeDown)); \\启动线程
myth[i].Start();
}
以上代码启动了10个线程(如果有10个文件),同时到该FTP站点下载不同的文件,但问题是我发现基本上只有两个文件同时下载,也就是说同一时间只有两个线程在工作,其他线程好像在队列中,为什么不是10个文件一起下载呢,麻烦指教!