2011-08-27 68 views
3

我想添加一些项目到列表框,但事情是,我希望应用程序在添加每个项目后等待500毫秒,然后添加下一个项目;所以我用下面的代码:如何让我的应用程序等待特定的时间?

reduction_list.Items.Add("ID"); 
    System.Threading.Thread.Sleep(500); 

    reduction_list.Items.Add("Name"); 
    System.Threading.Thread.Sleep(500); 

    reduction_list.Items.Add("City"); 
    System.Threading.Thread.Sleep(500); 

    reduction_list.Items.Add("Major"); 

但1500毫秒的应用程序等待,并增加了整个4项一起。

+0

这是在一个asp.net应用程序或winforms应用程序? –

+0

对不起,我没有做正确的标签。它是winforms – Daniel

回答

1

这是因为您添加后没有更新界面,所以只需在每个电话:

reduction_list.Invalidate(); 
reduction_list.Update(); 

这里的问题是,您没有给接口时间来更新自身,因为您正在UI线程上执行代码。因此,在每次添加后添加Invalidate()Refresh()将导致应用程序刷新reduction_list视图。

+0

它没有工作...仍然增加了1500毫秒后的整个4项 – Daniel

+0

thx ...它的工作 – Daniel

+1

即使这个工程,它永远不会被建议使用户界面冻结 - 它会阻止任何其他用户交互。在这种情况下,用户界面锁定1.5秒,这在我看来已经很长了。 –

1

问题是,你正在使UI线程休眠,这意味着它永远不会有机会重新绘制UI的新项目。

您应该使用计时器代替。 (要使用的确切计时器类取决于您使用的是什么UI框架--Winforms或WPF,请适当标记您的问题。)

+0

我编辑了标签....所以你能写出我需要写的全部命令吗? – Daniel

相关问题