Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让我的应用程序等待特定的时间?_C#_Winforms - Fatal编程技术网

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

C# 如何让我的应用程序等待特定的时间?,c#,winforms,C#,Winforms,我想向列表框中添加一些项目,但问题是,我希望应用程序在添加每个项目后等待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(

我想向列表框中添加一些项目,但问题是,我希望应用程序在添加每个项目后等待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个项目添加到一起。

问题在于您正在使UI线程休眠,这意味着它永远没有机会使用新项目重新绘制UI


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

这是因为您在添加后没有更新接口,所以只需在每次调用后添加以下内容:

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

这里的问题是,您没有给接口时间进行自我更新,因为您是在UI线程上执行代码的。因此,每次添加或添加后,应用程序都会刷新
缩减列表
视图。

这是在asp.net应用程序中还是在winforms应用程序中?很抱歉,我没有创建正确的标记。这是winformsEven,如果这起作用,永远不建议冻结UI-它将阻止任何其他用户交互。在这种情况下,UI被锁定在交互上1.5秒,这在我看来太长了。@Anders是的,我同意,这在我的脑海中浮现,但我们不知道他的要求,也许他希望如此,为什么,怎么知道。。