WPF中ProgressBar 每0.1秒value+1如何实现?
我想法是这样的privatevoidpbWroking(ProgressBarpb,inta){for(doublei=pb.Value;i<a;i++){DateTim...
我想法是这样的
private void pbWroking(ProgressBar pb, int a)
{
for (double i = pb.Value; i < a; i++)
{
DateTime dt = DateTime.Now.AddSeconds(0.1);
while (DateTime.Now < dt)
{
}
pb.Value += 1;
}
}
但实际使用时,虽然运行没问题,但没有及时显示,到了100才显示……求指导 展开
private void pbWroking(ProgressBar pb, int a)
{
for (double i = pb.Value; i < a; i++)
{
DateTime dt = DateTime.Now.AddSeconds(0.1);
while (DateTime.Now < dt)
{
}
pb.Value += 1;
}
}
但实际使用时,虽然运行没问题,但没有及时显示,到了100才显示……求指导 展开
2个回答
展开全部
你这样当然不行,你这样的话程序将独占进程,只有当你pb.Value =100时,主程序才会去刷界面,所以你看到是没有及时显示。
可以开一个线程或者放入定时器中更新pb.Value。
可以开一个线程或者放入定时器中更新pb.Value。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以使用DispatcherTimer类做定时功能。
后台你可以这么写:
public MainWindow()
{
InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0,0,1);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
if (pbar.Value <= 100)
{
pbar.Value += 1;
}
}
PS:pbar为前台ProgressBar的Name
后台你可以这么写:
public MainWindow()
{
InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0,0,1);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
if (pbar.Value <= 100)
{
pbar.Value += 1;
}
}
PS:pbar为前台ProgressBar的Name
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询