社区
C#
帖子详情
C#做下载文件,多个下载的问题
MrYoung
2010-03-11 06:30:16
目前需要写一个小程序 实现的功能就是定时去指定的URL下载文件,这下载的不只一个文件 问题就是如何让程序多个下载同时多线程执行或如何来下载完一个文件后继续下载下一个文件,C/S的程序,要有进度条显示,大家能否给个DEMO或说下思路,我知道用线程,现在思路比较混乱
...全文
474
6
打赏
收藏
C#做下载文件,多个下载的问题
目前需要写一个小程序 实现的功能就是定时去指定的URL下载文件,这下载的不只一个文件 问题就是如何让程序多个下载同时多线程执行或如何来下载完一个文件后继续下载下一个文件,C/S的程序,要有进度条显示,大家能否给个DEMO或说下思路,我知道用线程,现在思路比较混乱
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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#
文件
并发
下载
本文介绍了一款基于
C#
的Windows窗体程序,该程序实现了
文件
的并发
下载
功能。通过定义DownLoadFile类,程序能同时处理
多个
下载
任务,支持从不同服务器
下载
文件
,并在UI上实时显示
下载
进度。
c#
下载
文件
的几种方式
本文介绍了
C#
中实现
文件
下载
的四种方式,包括TransmitFile、WriteFile、分块
下载
和流方式
下载
,并针对大
文件
下载
时可能出现的内存溢出
问题
提供了解决方案。示例代码详细展示了每种方法的实现,帮助开发者更好地处理
文件
下载
场景。
C#
多个
文件
打包压缩
这篇博客介绍了如何使用
C#
结合SharpZipLib库实现
多个
文件
的打包压缩,并提供了一个后台ashx页面的详细步骤,包括设置压缩级别、加密密码、添加注释以及最后的
文件
下载
操作。
C#
通过
文件
流
下载
文件
这篇博客介绍了如何利用
C#
的
文件
流进行
文件
下载
操作,详细讲解了两个关键步骤:一是指定待
下载
文件
的绝对路径,二是执行
文件
的
下载
过程。
基于
C#
的多线程
文件
下载
器
本程序采用
C#
实现多线程
文件
下载
功能,支持断点续传及
下载
进度显示,能从文本
文件
中读取
下载
链接,自动处理
下载
任务,并在UI中实时更新
下载
状态。
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章