这个问题来自社区提问,代码保留一份用来以后回答
usingSystem;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
namespaceWindowsApplication4
{
///<summary>
///gui类
///</summary>
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
//用子线程工作
newSystem.Threading.Thread(newSystem.Threading.ThreadStart(StartDownload)).Start();
}
//开始下载
publicvoidStartDownload()
{
Downloaderdownloader=newDownloader();
downloader.onDownLoadProgress+=newDownloader.dDownloadProgress(downloader_onDownLoadProgress);
downloader.Start();
}
//同步更新ui
voiddownloader_onDownLoadProgress(longtotal,longcurrent)
{
if(this.InvokeRequired)
{
this.Invoke(newDownloader.dDownloadProgress(downloader_onDownLoadProgress),newobject[]{total,current});
}
else
{
this.progressBar1.Maximum=(int)total;
this.progressBar1.Value=(int)current;
}
}
}
///<summary>
///下载类
///</summary>
publicclassDownloader
{
//委托
publicdelegatevoiddDownloadProgress(longtotal,longcurrent);
//事件
publiceventdDownloadProgressonDownLoadProgress;
//开始模拟工作
publicvoidStart()
{
for(inti=0;i<100;i++)
{
if(onDownLoadProgress!=null)
onDownLoadProgress(100,i);
System.Threading.Thread.Sleep(100);
}
}
}
}
本文介绍了一种使用子线程在Windows应用程序中实现文件下载的方法,通过创建下载类和主窗口类之间的异步交互,实现了文件进度的实时更新和下载任务的并发执行。
3423

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



