如何让我的应用程序等待特定的时间?
我想向列表框中添加一些项目,但问题是,我希望应用程序在添加每个项目后等待 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 个项目添加在一起。
I want to add some Items to a listbox, but the thing is, I want the application waits for 500ms after adding each item then adds the next item; so I used the code below:
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");
but the application waits for 1500ms and adds the whole 4 items all together.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
那是因为您在添加后没有更新界面,所以只需在每次调用后添加以下内容即可:
这里的问题是您没有给界面时间来更新自身,因为您是在 UI 线程执行代码。因此添加 Invalidate() 或 Refresh() 每次添加后都会导致应用程序刷新
reduction_list
视图。That is because you didn't update the interface after adding, so just add this after each call:
The problem here is that you didn't give the interface time to update itself, since you are executing the code at UI thread. So adding Invalidate() or Refresh() after each add will cause the application to refresh the
reduction_list
view.问题是您正在使 UI 线程休眠,这意味着它永远没有机会使用新项目重新绘制 UI。
您应该使用计时器。 (要使用的确切计时器类取决于您使用的 UI 框架 - Winforms 或 WPF。请适当标记您的问题。)
The problem is that you are making the UI thread sleep, which means that it never gets a chance to redraw the UI with the new items.
You should use a timer instead. (The exact timer class to use depends on what UI framework you are using - Winforms or WPF. Please tag your question appropriately.)