分析C#多线程下载的问题.doc_第1页
分析C#多线程下载的问题.doc_第2页
分析C#多线程下载的问题.doc_第3页
分析C#多线程下载的问题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#多线程程序下载之思路整理相信大家都有用过网际快车等下载资源的经历,它里面是可以设置线程数的(近年版本默认是10,曾经默认是5)。它会将文件分成与线程数相同的部分,然后每个线程下载自己的那一部分,这样下载效率就有可能提高。相信大家都有加多线程数,提升下载效率的经历。但细心的用户会发现,在带宽一定的情况下,并不是线程越多,速度越快,而是在某一点达到峰值。在C#中用多线程并不难实现。它有一个命名空间:System.Threading,提供了多线程的支持。要开启一个新线程,须要以下的初始化: ThreadStart startDownload = new ThreadStart( DownLoad ); /线程起始设置:即每个线程都执行DownLoad(),注意:DownLoad()必须为不带有参数的方法 Thread downloadThread = new Thread( startDownload ); /实例化要开启的新类 downloadThread.Start();/开启线程 由于线程起始时启动的方法不能带有参数,这就为多线程共享资源添加了麻烦。不过我们可以用类级变量(当然也可以使用其它方法,笔者以为此方法最简单易用)来解决这个问题。知道开启多线程下载的方法后,大家可能会发生几个疑问:1.如何操纵线程的数量?2.如何防止多线程下载同一网页?3.如何判断线程结束?4.如何操纵线程结束? 下面就这几个问题提出解决方法:1.线程数量我们可以通过for循环来实现,就如同当年初学编程的打点程序一样。譬如已知用户指定了n(它是一个int型变量)个线程吧,可以用如下方法开启五个线程。 Thread downloadThread; /声名下载线程,这是C#的优势,即数组初始化时,不需要指定其长度,可以在使用时才指定。 这个声名应为类级,这样也就为其它方法控件它们提供了可能 ThreadStart startDownload = new ThreadStart( DownLoad ); /线程起始设置:即每个线程都执行DownLoad() downloadThread = new Thread n ;/为线程申请资源,确定线程总数 for( int i = 0; i N ) /要是已经尝试够了次数,则退出进程downloadThreadi.Abort; /退出进程 else/如果没有尝试够次数Times = 0; /尝试次数归零处理/进行下一步针对得到的Url的处理 4.这个问题相对简单,因为在问题一中已经提议,将线程声名为类级数组,这样就很易于操纵。只要用一个for循环即可结束。代码如下: for( int i = 0; i n; i+ )/关闭指定数量n的线程数downloadTh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论