winform进度条问题 急!!!

daxinghuangdi 2010-09-17 10:55:46
整个项目基本只差这一个效果没有完善了,这几天老大逼着交项目,不能再拖了
我是个泥腿子,新人,多线程是在接触这个项目后才开始了解的,不怎么会用
目前做出来的效果是进度条能够正常显示进度,但无法实现程序执行完毕进度条窗体自动关闭以及Click进度条上的“取消”按钮终止线程
而设计书上要求进度条与父窗体的DataGridView同步显示,执行完一次循环立即刷新DataGridView
在进度条上点击“取消”即停止程序执行,DataGridView中显示已执行的结果

希望老大们能提供一个完整的思路,附上伪代码最好
最后一百分全送掉了
...全文
203 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
geminizane 2010-09-17
  • 打赏
  • 举报
回复
貌似在什么书上来着,thread的里边有说到多线程这块,
C#高级编程里边有讲到噢,LZ可以去参考下,我这边米书..
porschev 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 daxinghuangdi 的回复:]
引用 2 楼 porschev 的回复:
你的这问题应该是都可以加入到进度条的显示过程代码中

不知道你进度条显示是不是在一个方法中写的

你在显示进度条的代码中加入对线程的判断。。

判断线程是否在访问中。。。

那样就可以在判断中关闭窗体了


如果你用的是ProgressBar写的进度条鼠标点击也有事件

ProgressBar

谢谢回复!

我使用的是……
[/Quote]

不需要。。。。
daxinghuangdi 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 porschev 的回复:]
你的这问题应该是都可以加入到进度条的显示过程代码中

不知道你进度条显示是不是在一个方法中写的

你在显示进度条的代码中加入对线程的判断。。

判断线程是否在访问中。。。

那样就可以在判断中关闭窗体了


如果你用的是ProgressBar写的进度条鼠标点击也有事件

ProgressBar
[/Quote]
谢谢回复!

我使用的是ProgressBar
在扫描硬件和操作硬件并更新数据库等耗时程序中使用
代码是写在进度条窗体的Load事件里,父窗体只是同步刷新DataGridView
线程在父窗体中声明定义的 事件触发即开启线程 指向封装了硬件接口的函数

是否需要在进度条窗体重新创建一个线程或者直接将线程放在进度条窗体中?
快乐小子飞 2010-09-17
  • 打赏
  • 举报
回复
楼主散分吧
快乐小子飞 2010-09-17
  • 打赏
  • 举报
回复
终止线程
if (th1.IsAlive)
{
th1.Abort();
}
public Thread th1;

delegate void SetValues(int i);
delegate void ShowProBar(int i);

private void button1_Click(object sender, EventArgs e)
{
th1 = new Thread(new ThreadStart(test1));
th1.Start();
}
private void test1()
{
int i = 100;
while (i > -1)
{
setvalue1(i);
ShowProgress1(i);
i--;
Thread.Sleep(1000);
}
}
private void setvalue1(int i)
{
if (this.InvokeRequired)
{
this.Invoke(new SetValues(setvalue1), new object[] {i});
}
else
{
datagridview添加数据
}
}
private void ShowProgress1(int i)
{
if (this.progressBar1.InvokeRequired)
{
this.Invoke(new ShowProBar(ShowProgress1), new object[] { i });
}
else
{
progressBar1.Value = 100-i;
progressBar1.Visible=true;
}
}
porschev 2010-09-17
  • 打赏
  • 举报
回复
你的这问题应该是都可以加入到进度条的显示过程代码中

不知道你进度条显示是不是在一个方法中写的

你在显示进度条的代码中加入对线程的判断。。

判断线程是否在访问中。。。

那样就可以在判断中关闭窗体了


如果你用的是ProgressBar写的进度条鼠标点击也有事件

ProgressBar

无涯大者 2010-09-17
  • 打赏
  • 举报
回复
daxinghuangdi 2010-09-17
  • 打赏
  • 举报
回复
改了一天BUG
都没时间去弄进度条
我来参考一下大家的意见

111,097

社区成员

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

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

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