您的位置:首页 > 编程语言 > C#

c#中子线程控制进度条的一个简单例子

2008-05-06 01:39 471 查看
这个问题来自社区提问,代码保留一份用来以后回答



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, EventArgs e)






...
{




//
用子线程工作




new
System.Threading.Thread(
new
System.Threading.ThreadStart(StartDownload)).Start();



}




//
开始下载




public

void
StartDownload()






...
{



Downloader downloader
=

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
dDownloadProgress onDownLoadProgress;




//
开始模拟工作




public

void
Start()






...
{




for
(
int
i
=

0
; i
<

100
; i
++
)






...
{




if
(onDownLoadProgress
!=

null
)



onDownLoadProgress(
100
, i);



System.Threading.Thread.Sleep(
100
);



}



}



}



}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: