有关多线程下载有关资料与总结
来源:互联网 发布:眼霜有用吗 知乎 编辑:程序博客网 时间:2024/03/29 14:19
实例1 转自c# 多线程下载
实例2 转自用C#实现HTTP协议下的多线程文件传输
HTTP协议,HTTP亦即Hpyer Text Transfer Protocal的缩写,它是现代互联网上最重要的一种网络协议,超文本传输协议
位于TCP/IP协议的应用层,是一个面向无连接、简单、快速的C/S结构的协议。HTTP的工作过程大体上分连接、请求、响
应和断开连接四个步骤
HttpWebRequest类实现了很多通过HTTP访问WEB服务器上文件的高级功能。HttpWebRequest类对WebRequest中定义的属性和方法提供支持,HttpWebRequest将发送到Internet资源的公共HTTP标头的值公开为属性,由方法或系统设置,常用的由属性或方法设置的HTTP标头为:接受, 由Accept属性设置, 连接, 由Connection属性和KeepAlive属性设置, Content-Length, 由ContentLength属性设置, Content-Type, 由ContentType属性设置, 范围, 由AddRange方法设置. 实际使用中是将标头信息正确设置后,传递到WEB服务器,WEB服务器根据要求作出回应。
HttpWebResponse类继承自WebResponse类,专门处理从WEB服务器返回的HTTP响应,这个类实现了很多方法,具有很多属性,可以全面处理接收到的互联网信息。在HttpWebResponse类中,对于大多数通用的HTTP标头字段,都有独立的属性与其对应,程序员可以通过这些属性方便的访问位于HTTP接收报文标头字段中的信息,本例中用到的HttpWebResponse类属性为:ContentLength 既接收内容的长度。
总结的代码
主线程
重点还要学习多线程的处理。流文件的处理也是个很有意思的地方
这里不可避免的遇到了个问题,线程同步。如_threadCompleteNum++,因为是多个线程同时并发执行,在此句之后可能会造成有两个或两个以上线程认为_threadCompleteNum == _threadNum 条件(=5)都成立,例如第五个线程刚执行完_threadCompleteNum++,而第四个线程刚执行到条件判断,则造成两个条件都成立,而执行两次Complete()合并文件的方法。
还有例如主线程被调用多次,就是Btn多次单击生成多个主线程,解决此方法使用了Lock语句。
转自使用C# lock同时访问期间共享数据
主线程的LOCK在外部声明静态变量
private static object run = new object();
再在主线程的第一句加lock (run)
这样不会造成多个主线程同时访问生成的暂时文件资源造成冲突。
- 有关多线程下载有关资料与总结
- 有关linux下多进程与多线程的区别总结
- 与团队/组织建设有关的一些资料。
- 与ClientWidth有关的一点资料
- android与图形有关的一些资料
- DigestInputStream --还是与下载有关的
- 有关singleton的资料
- 正则表达式有关资料
- asterisk有关的资料
- 中文分词有关资料
- 有关libiconv官方资料
- 有关HTML5学习资料
- PDF有关资料
- java学习有关资料
- GPU有关的资料
- 收集有关编程资料
- 信号的有关资料
- Shibboleth有关的资料
- JAVA 连接MSSQL2005 注意问题
- JS直接访问数据 -SQLite
- 一级二级三级缓存谁比较重要???
- JS直接访问数据 -ACCESS
- linux上配置svnserve服务,搭建自己的svn服务器
- 有关多线程下载有关资料与总结
- 在C#中使用SerialPort类实现串口通信(陆续更新)
- VS2008创建智能设备项目与IE8冲突的解决
- offsetX,offsetY,layerX,layerY
- 反其道而用之,把数组写入文件2
- Linux一些常用的基本命令
- 可拖动FLASH+XML图片展示效果【点击放大带标题内容】
- "ScriptManager不是已知元素 可能存在编译错误"
- jsp页面中的按钮仅对某一角色可见