社区
C#
帖子详情
C#做下载文件,多个下载的问题
MrYoung
2010-03-11 06:30:16
目前需要写一个小程序 实现的功能就是定时去指定的URL下载文件,这下载的不只一个文件 问题就是如何让程序多个下载同时多线程执行或如何来下载完一个文件后继续下载下一个文件,C/S的程序,要有进度条显示,大家能否给个DEMO或说下思路,我知道用线程,现在思路比较混乱
...全文
451
6
打赏
收藏
C#做下载文件,多个下载的问题
目前需要写一个小程序 实现的功能就是定时去指定的URL下载文件,这下载的不只一个文件 问题就是如何让程序多个下载同时多线程执行或如何来下载完一个文件后继续下载下一个文件,C/S的程序,要有进度条显示,大家能否给个DEMO或说下思路,我知道用线程,现在思路比较混乱
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shsoft888
2010-03-12
打赏
举报
回复
我这有例子,我自己做的,以经用在了公司的软件自动更新中。
程序思路就是用WCF的流操作。
代码发上来太长了,我说下思路,不明白加我QQ号:9096198
服务端我自定议了一个XML文件,里面配制着软件版本号所要更新的文件列表。
客户端也有个自定议的XML文件,里面记录着服务器URL及端口。
在客户端调用服务端的方法,获取到指定版本号要更新的文件列表。
获取到列表后,调用服务端方法DownloadFile下载指定的文件。
DownloadFile方法代码如下:
public MyFileInfo DownloadFile(DownloadFileRequest request)
{
try
{
FSDownloadConfig fsdc = new FSDownloadConfig();
string path = fsdc.FileDirectory(request.Ver);
FileInfo fi = new FileInfo(path + request.FileName);
FileStream fStream = File.OpenRead(path + request.FileName);
MyFileInfo result = new MyFileInfo(fStream, request.FileName, fi.Length);
return result;
}
catch (FileNotFoundException)
{
throw new FaultException(new FaultReason("服务器端没有找到要下载的文件!"));
}
}
客户端下载文件时,可以开启多个线程来调用这个方法,可以实现多线程同时下载。
客户端下载文件代码如下:
private void downFile()
{
ChannelFactory<IFileManager> _factory = new ChannelFactory<IFileManager>(_bind, new EndpointAddress(_baseAddress));
IFileManager manager = _factory.CreateChannel();
string remoteFileName = _filename;
MyFileInfo fileInfo = manager.DownloadFile(new DownloadFileRequest(_ver, remoteFileName));
FileStream fs = File.Create(fileInfo.FileName);
int bytesRead = 0;
long totalBytesRead = 0;
byte[] buffer = new byte[10000];
do
{
bytesRead = fileInfo.Stream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, bytesRead);
totalBytesRead += bytesRead;
double currentProgress = ((double)totalBytesRead) / fileInfo.FileSize;
if (DownloadProgressEvent != null)
{
DownloadEvent de = new DownloadEvent();
de.FileName = fileInfo.FileName;
de.Size = fileInfo.FileSize;
de.DwSize = totalBytesRead;
de.Progress = Convert.ToInt32(currentProgress * 100);
this.DownloadProgressEvent(this, de);
}
} while (bytesRead > 0);
fs.Close();
fs.Dispose();
((IClientChannel)manager).Close();
_factory.Close();
}
MrYoung
2010-03-12
打赏
举报
回复
恩 我自己解决了 也差不多就是这个样子 事件通知更新进度条 事件通知下载完成执行操作
MrYoung
2010-03-11
打赏
举报
回复
有没有CS的例子呢
wiki14
2010-03-11
打赏
举报
回复
http://topic.csdn.net/u/20100228/19/e7f49404-9e81-461a-8be1-e7040778a802.html?86719
MrYoung
2010-03-11
打赏
举报
回复
能否具体一点 最好给个DEMO
wuyq11
2010-03-11
打赏
举报
回复
ftpwebrequest下载文件
或webrequest
webClient下载实现进度条
C#
常用类库(100
多个
)
"
C#
常用类库(100
多个
)"这个资源包涵盖了众多实用的编程领域,包括
文件
处理、网络通信、HTTP交互、多线程、UI控件、Office文档操作、输入/输出(I/O)操作、JSON序列化与反序列化、压缩与解压、文本处理、正则表达式...
C#
自定义控件库
在.NET框架中,
C#
是一种常用...总的来说,"
C#
自定义控件库"涵盖了软件开发中控件设计与定制的
多个
方面,包括UI设计、事件处理、数据交互等。通过熟练掌握这些知识点,开发者能够构建出功能强大、美观且易用的用户界面。
C#
入门必看实力程序100个
这些实例旨在让你通过实践来学习,每一个例子都是一个独立的课题,帮助你在解决实际
问题
中巩固所学。建议按照例子的顺序逐步学习,同时结合官方文档和在线资源,以确保全面理解和掌握每个知识点。
C#
基类整理
以上知识点只是
C#
基类的一小部分,实际上,
C#
基类还涵盖了网络编程、多线程、图形界面设计、XML处理、反射等
多个
方面。通过深入理解和熟练运用这些基类,开发者可以更高效地编写出健壮、安全的
C#
应用程序。在实践中...
c#
+多年积累的类库(非常全)
本资源“
c#
+多年积累的类库(非常全)”集合了作者在多年开发过程中整理的各种实用类库,涵盖XML操作、
文件
操作、图形操作和数据库操作等
多个
方面。下面将分别详细介绍这些关键领域的知识点。 1. XML操作: XML...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章