android 跑马灯滚动条,【未解决】C#中添加始终滚动的进度条(跑马灯)和一格一格前进的滚动条(块)...

【问题】

需要添加一个进度条,用于指示当前操作出于忙的状态,或者根据具体的步骤完成程度,按照比例显示完成的百分比。

【解决过程】

1.之前就已经搜了部分参考资料。

找到了,想要设置为跑马灯,即那种一种始终滚动,不停止的效果,是将对应的progressbar的style设置为Marquee:

pgbIndicator.Style = ProgressBarStyle.Marquee;

但是此处遇到的问题是,我已经是这样设置的了,但是结果去执行了那段很耗时的登陆网站的代码,结果这个progressbar,却消失了。

本以为是没有设置为可见,所以去:

pgbIndicator.Visible = true;

但是还是不行。

后来才明白,原来是执行耗时的那部分的代码,导致此处UI没有更新,所以没法显示对应的跑马灯的效果。

好像是要添加对应的不同的别的线程,来定期或不定期地更新进度条的滚动效果。

3.看了上面一堆的讨论,貌似还是用BackgroundWorker最简单。

然后去找了相关参考代码:

http://vbcity.com/forums/t/159137.aspx

后来也找到了微软的参考代码:

http://msdn.microsoft.com/en-US/library/hybbz6ke(v=vs.80).aspx

但是实际上使用过程中,很是郁闷,首先还是没有很简单的方法可以实现:

start();

doTimeConsumingWork();

end();

的形式,而且此处发现如果用了BackgroundWorker,即使是最简单的实现了,也还是需要,告诉BackgroundWorker自己所需要做的事情是什么,

即需要在doWork中写死每个BackgroundWorker要做的事情的,使用起来,可以说极为不便啊。

更要命的是,还不能打断点调试,否则到了断点位置,鼠标就变成忙状态,而无法继续调试,就会死掉。。。

被搞崩溃了,算了,果断放弃此方法。private void btnInit_Click(object sender, EventArgs e)

{

Thread thread = new Thread(doInit);

thread.IsBackground = true;

thread.Start();

}

delegate void showProgressbarDelegate();

public void showProgressbar()

{

if (InvokeRequired)

{

this.BeginInvoke(new showProgressbarDelegate(showProgressbar), new object[] { });

return;

}

pgbIndicator.Style = ProgressBarStyle.Marquee;

}

private void doInit()

{

showProgressbar();

//do time consuming work ...

}

还是没法运行,会出现跨线程调用无法访问某参数的异常:

An unhandled exception of type ’System.InvalidOperationException’ occurred in System.Windows.Forms.dll:

Additional information: Cross-thread operation not valid: Contrl ‘trvSkydrive’accessed from a thread other than the thread it was created on.

88aff01d62b93d053b5fe41397db410e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值