这个问题来自社区提问,代码保留一份用来以后回答
using
System;
using
System.ComponentModel;
using
System.Windows.Forms;
namespace
WindowsApplication4
...
{
/**/
///
<summary>
///
gui类
///
</summary>
public
partial
class
Form1:Form
...
{
public
Form1()
...
{
InitializeComponent();
}
private
void
button1_Click(
object
sender,EventArgse)
...
{
//
用子线程工作
new
System.Threading.Thread(
new
System.Threading.ThreadStart(StartDownload)).Start();
}
//
开始下载
public
void
StartDownload()
...
{
Downloaderdownloader
=
new
Downloader();
downloader.onDownLoadProgress
+=
new
Downloader.dDownloadProgress(downloader_onDownLoadProgress);
downloader.Start();
}
//
同步更新ui
void
downloader_onDownLoadProgress(
long
total,
long
current)
...
{
if
(
this
.InvokeRequired)
...
{
this
.Invoke(
new
Downloader.dDownloadProgress(downloader_onDownLoadProgress),
new
object
[]
...
{total,current}
);
}
else

...
{
this
.progressBar1.Maximum
=
(
int
)total;
this
.progressBar1.Value
=
(
int
)current;
}
}
}


/**/
///
<summary>
///
下载类
///
</summary>
public
class
Downloader
...
{
//
委托
public
delegate
void
dDownloadProgress(
long
total,
long
current);
//
事件
public
event
dDownloadProgressonDownLoadProgress;
//
开始模拟工作
public
void
Start()
...
{
for
(
int
i
=
0
;i
<
100
;i
++
)
...
{
if
(onDownLoadProgress
!=
null
)
onDownLoadProgress(
100
,i);
System.Threading.Thread.Sleep(
100
);
}
}
}
}
C# GUI 下载进度示例
本文介绍了一个使用 C# 编写的图形界面应用程序,该程序通过多线程技术实现了一个文件下载功能,并展示了如何在 GUI 中实时更新下载进度。
381

被折叠的 条评论
为什么被折叠?



