Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
林新发
WinForm Download Demo
提交
7ee908d1
W
WinForm Download Demo
项目概览
林新发
/
WinForm Download Demo
通知
120
Star
5
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
WinForm Download Demo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7ee908d1
编写于
10月 13, 2020
作者:
林新发
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update DownloadThread.cs
上级
46248440
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
79 addition
and
23 deletion
+79
-23
winform1/DownloadThread.cs
winform1/DownloadThread.cs
+79
-23
未找到文件。
winform1/DownloadThread.cs
浏览文件 @
7ee908d1
using
System
;
using
System
;
using
System.IO
;
using
System.Net
;
using
System.Security.Cryptography
;
using
System.Text
;
namespace
winform1
{
class
DownloadThread
{
/// <summary>
/// 线程开始事件
/// </summary>
public
event
EventHandler
threadStartEvent
;
/// <summary>
/// 线程执行时事件
/// </summary>
public
event
EventHandler
threadEvent
;
/// <summary>
/// 线程结束事件
/// </summary>
public
event
EventHandler
threadEndEvent
;
public
delegate
void
EventDownloadStart
(
long
totalSize
);
public
delegate
void
EventDownloadIng
(
long
curDownloadSize
);
public
delegate
void
EventCheckingMd5
();
public
delegate
void
EventDownloadDone
();
public
event
EventDownloadStart
eventDownloadStart
;
public
event
EventDownloadIng
eventDownloadIng
;
public
event
EventCheckingMd5
eventCheckingMd5
;
public
event
EventDownloadDone
eventDownloadDone
;
public
static
string
GetMD5FromFile
(
string
filename
)
{
try
{
FileStream
fs
=
new
FileStream
(
filename
,
FileMode
.
Open
);
MD5CryptoServiceProvider
md5Helper
=
new
MD5CryptoServiceProvider
();
byte
[]
data
=
md5Helper
.
ComputeHash
(
fs
);
fs
.
Close
();
StringBuilder
sbr
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
data
.
Length
;
++
i
)
{
sbr
.
Append
(
data
[
i
].
ToString
(
"X2"
));
}
string
md5Str
=
sbr
.
ToString
();
return
md5Str
;
}
catch
(
Exception
)
{
throw
;
}
}
/// <summary>
/// c#,.net 下载文件
/// </summary>
/// <param name="url">下载文件地址</param>
/// <param name="filename">下载后的存放地址</param>
public
void
RunMethod
(
string
url
,
string
filename
)
public
void
RunMethod
(
string
url
,
string
filename
,
long
totalSize
,
string
md5
)
{
try
{
Stream
st
;
Stream
so
;
HttpWebRequest
request
=
(
HttpWebRequest
)
WebRequest
.
Create
(
url
);
HttpWebResponse
response
=
(
HttpWebResponse
)
request
.
GetResponse
();
request
.
Timeout
=
10000
;
//通知主界面,我开始了, response.ContentLength用来设置进度条的最大值
threadStartEvent
.
Invoke
(
response
.
ContentLength
,
null
);
eventDownloadStart
(
totalSize
);
if
(
File
.
Exists
(
filename
))
{
//续传
so
=
File
.
OpenWrite
(
filename
);
if
(
so
.
Length
<
totalSize
)
{
so
.
Seek
(
so
.
Length
,
SeekOrigin
.
Current
);
request
.
AddRange
((
int
)
so
.
Length
);
}
else
{
so
.
Close
();
so
=
new
FileStream
(
filename
,
FileMode
.
Create
);
}
}
else
{
so
=
new
FileStream
(
filename
,
FileMode
.
Create
);
}
long
totalDownloadedByte
=
so
.
Length
;
HttpWebResponse
response
=
(
HttpWebResponse
)
request
.
GetResponse
();
st
=
response
.
GetResponseStream
();
Stream
st
=
response
.
GetResponseStream
();
Stream
so
=
new
FileStream
(
filename
,
FileMode
.
Create
);
long
totalDownloadedByte
=
0
;
byte
[]
by
=
new
byte
[
1024
];
int
osize
=
st
.
Read
(
by
,
0
,
by
.
Length
);
while
(
osize
>
0
)
...
...
@@ -46,13 +93,22 @@ namespace winform1
osize
=
st
.
Read
(
by
,
0
,
by
.
Length
);
//通知主界面我正在执行,totalDownloadedByte表示进度条当前进度
threadEvent
.
Invoke
(
totalDownloadedByte
,
null
);
eventDownloadIng
(
totalDownloadedByte
);
}
so
.
Close
();
st
.
Close
();
//通知主界面我已经完成了
threadEndEvent
.
Invoke
(
null
,
null
);
eventCheckingMd5
();
if
(
GetMD5FromFile
(
filename
)
!=
md5
)
{
//md5校验不通过,重新传
RunMethod
(
url
,
filename
,
totalSize
,
md5
);
}
else
{
//通知主界面我已经完成了
eventDownloadDone
();
}
}
catch
(
Exception
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录