c# 多线程具体实现方法
- 提问者网友:酱爆肉
- 2021-07-31 13:30
- 五星知识达人网友:罪歌
- 2021-07-31 14:46
新建一个窗体frmUpLoad 放置一个进度条
复制下面的内容
private delegate void SetPos(int ipos);//定义委托
private void SetTextMessage(int ipos)
{
if (this.InvokeRequired)
{
SetPos setpos = new SetPos(SetTextMessage);
this.Invoke(setpos, new object[] { ipos});
}
else
{
this.progressBar1.Value = Convert.ToInt32(ipos);
if (this.progressBar1.Value == 100)
{
this.Close();
}
}
}
private void frmUpLoad_Load(object sender, EventArgs e)
{
this.progressBar1.Maximum = 100;
Thread fThread = new Thread(
new ThreadStart(UpdateSoft));
fThread.Start();
}
public void UpdateSoft()
{
//这里为你升级程序的方法
//如:有10个新升级的DLL文件
//第一个升级完成 10%
SetTextMessage(10);
//....
//第十个升级完成 100%
SetTextMessage(100);
}
- 1楼网友:渡鹤影
- 2021-07-31 15:44
比如已知用户指定了n(它是一个int型变量)个线程吧,可以用如下方法开启五个线程
Thread[] downloadThread;//声名下载线程,这是C#的优势,即数组初始化时,不需要指定其长度,可以在使用时才指定。这个声名应为类级,这样也就为其它方法控件它们提供了可能
ThreadStart startDownload = new ThreadStart( DownLoad );//线程起始设置:即每个线程都执行DownLoad()
downloadThread = new Thread[ n ];//为线程申请资源,确定线程总数
for( int i = 0; i < n; i++ )//开启指定数量的线程数
{
downloadThread[i] = new Thread( startDownload );//指定线程起始设置
downloadThread[i].Start();//逐个开启线程
}
好了,实现控制开启线程数是不是很简单啊