谢谢
解决方案 »
- 求一迷宫算法
- 哪位牛人来回答这个问题 socket 二进制传输
- 用的VS2003一用RICHTEXTBOX就出现异常,如何解决
- 异常详细信息: System.Web.HttpException: 服务器太忙这个总是是那里的问题怎么解决
- =================电子邮件附件=====超郁闷============
- 为什么用UDP写的传送文件的程序,文件大于2G就不行了?
- 请教:如何自动从FTP空间下载CVS文件并自动导入特定数据库
- socket 问题
- 如何实现压缩文本,高分
- 怎样返回一个0到200之间的随机数?
- 怎样注销并重新启动应用程序?
- 一个关于System.Windows.Forms.RichTextBox的简单问题!
Thread哇!!
多个Thread间互相怎么传值哇??
不知道static变量行不行哇!!
在导数据前统计数据的总数,赋给进度条的MAX,然后,每导好一个单元的数据对进度条的step+1,
这样就行了。
如果你是多个线程在导数据,可以定义一个static变量,对其改变数值,然后将static变量赋给进度条的step(事先还是要统计数据总量),这样也行。
不知道我回答的,你满意吗?如果还有问题,大家可以谈论下。
private void RaiseProgressChanged(long blockSize)//通知主线程的函数
{
if(ProgressChanged != null)
ProgressChanged(this, new DownloadEventArgs(blockSize));
}
在你的倒数据的线程里面,当进度变化需要通知进度条时,触发这个事件
this.RaiseProgressChanged(di.BlockSize);
在你的UI Form里面,注册这个时间的监听函数:
downloader.ProgressChanged += new DownloadEventHandler(this.OnFileProgressChanged);
private LongDelegate fileProgressChanger; // 代理声明
private void OnFileProgressChanged( object sender, DownloadEventArgs e )
{
progressBar1.Invoke(fileProgressChanger, new object[] {e.lValue}); //invoke会新建一个单独的线程更新进度条
}
private void ChangeFileProgress(long blockSize)
{
//int pValue = (int) ((blockSize / _currentFileSize) * 1000 );
//progressBar1.Value = pValue;
progressBar1.PerformStep();
}