如何让我的应用程序等待特定的时间?

时间:2011-08-27 14:50:22

标签: c# winforms

我想将一些项目添加到列表框中,但问题是,我希望应用程序在添加每个项目后等待500ms然后添加下一个项目;所以我使用下面的代码:

    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个项目一起添加。

2 个答案:

答案 0 :(得分:1)

问题在于您正在使UI线程处于休眠状态,这意味着它永远不会有机会使用新项重绘UI。

您应该使用计时器。 (要使用的确切计时器类取决于您使用的UI框架 - Winforms或WPF。请正确标记您的问题。)

答案 1 :(得分:1)

这是因为您在添加后没有更新界面,所以只需在每次调用后添加:

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

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