100分求助线程传递参数的问题

zhengshaodong 2007-09-09 04:41:07
看了渔翁的这篇博客
http://blog.csdn.net/knight94/archive/2006/05/27/757351.aspx
之后还是不懂

已知类Download是用于下载东西的
在Form窗体中要如何更新ProgressBar呢?
因为下载过程中肯定要传递2个参数(文件当前大小和文件的总大小)给Form中的ProgressBar 所以感到束手无策啊
希望指点一下 谢谢

Form1_Load(object sender,EventArgs e)
{
Download down = new Download("path","url")
Thread downThread = new Thread(new ThreadStart(down.Start));
downThread.Start();
}
如何让downThread线程边执行边传递2个参数给窗体呢
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Optione 2007-09-09
  • 打赏
  • 举报
回复

完成的多少和总的大小用个事件委托
tsy_zx 2007-09-09
  • 打赏
  • 举报
回复
看看http://zhidao.baidu.com/question/30856965.html
多线程控制主窗体控件。
zhengshaodong 2007-09-09
  • 打赏
  • 举报
回复
假设我把把问题简单化

class Download
{
public int max=200;
public int nvalue;
public void Start()
{
for(nvalue=0; nvalue<max;nvalue++)
{
Thread.Sleep(200);
}
}
}

----------------------------------------------------
Form窗体中
Form1_Load(object sender,EventArgs e)
{
Download down = new Download();
Thread downThread = new Thread(new ThreadStart(down.Start));
downThread.Start();
}

如何在执行过程中让nvalue和max的值拿给Progress用呢
zhengshaodong 2007-09-09
  • 打赏
  • 举报
回复
A
///Form窗体
public delegate UpdateProgress(int nvalue);

B
//Download类
public delegate UpdateProgress(int nvalue);


是像A这样 还是 像B这样

down.Start方法时带上(不会出现线程间操作无效: 从不是创建控件“progressBar1”的线程访问它吗)
tsy_zx 2007-09-09
  • 打赏
  • 举报
回复
不知道你懂没懂?
tsy_zx 2007-09-09
  • 打赏
  • 举报
回复
建一个委托,要一个int 参数,然后调用down.Start方法时带上,那个委托,委托就是你在窗体里声明的方法(用来更新Progress的)。
tsy_zx 2007-09-09
  • 打赏
  • 举报
回复
建一个委托,要一个int 参数,然后调用down.Start方法时带上,那个委托,委托就是你在窗体里声明的方法(用来更新Progress的)。
zhengshaodong 2007-09-09
  • 打赏
  • 举报
回复
如何用呢?麻烦指点一下
tsy_zx 2007-09-09
  • 打赏
  • 举报
回复
用一个委托吧!

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧