我的C#WinForms UI有一些用户可以使用滑块调整的参数。 UI的很多部分可以基于滑块值进行交互式更新。但是,某些部件需要较长的计算时间,因此需要设置一些开销。我只想在用户停止移动滑块2秒后才启动此更新过程。什么是最好的方法来做到这一点?经过n秒后启动UI更新的最佳方式是什么?
0
A
回答
1
如果在2秒后有任何更改,您可以使用定时器控件重置UI。
计时器还会检查每次更改后标记的变量,因此只有当标志没有更改并且计时器超时时,UI才会被解压。
0
我会有一个私人实例成员引用一个线程计时器。当计时器达到2秒钟时,包含计算的事件将触发。所有滑块都会有一个更改监听器,它可以将计时器设置为0并启动计时器。
2
Reactive Framework将是完美的。如果你有C#3.5,你可以使用它。
Observable.FromEvent<ScrollEventArgs>(vScrollBar1, "Scroll")
.Throttle(TimeSpan.FromSeconds(2)) // Wait for two second alter all Scroll event ended
.ObserveOnWindowsForms() // Make the lambda expression run on the UI thread
.Subscribe(
e =>
{
// Update your stuff
labelControl1.Text = e.EventArgs.NewValue.ToString();
});
可以摆脱ObserveOnWindowsForms
通话,如果你不想让你的用户界面在运行LAMDA挂,但要确保你正确地访问你的UI组件,以避免交叉线程例外。
0
您需要使用此计时器:System.Windows.Forms.Timer。为什么?它在UI线程上执行,这意味着您不必使用InvokeRequired或BeginInvoke在UI线程上执行UI更新代码。
相关问题
- 1. 什么是更新计时器UI的最佳方式
- 2. 什么是启动后台进程的最佳方式,可以稍后访问
- 3. 从x509Certificate2启动RSACryptoServiceProvider的最佳方式是什么?
- 4. 获取Perl数组的最后N个元素的最佳方式是什么?
- 5. 什么是更新树面板的最佳方式
- 6. 什么是更新大量帐户的最佳方式
- 7. 什么是处理几列更新的最佳方式
- 8. 什么是更新数据库列表的最佳方式?
- 9. MVVM在命令之后更新UI的方式是什么?
- 10. 首次启动电影时启动电影的最佳方式是什么
- 11. 在Perl中获得Epoch毫秒的最佳方式是什么?
- 12. 什么是自动化后构建操作的最佳方式?
- 13. 什么是自动更换文字的最佳方式?
- 14. 3秒后刷新页面内容/值的最佳方法是什么?
- 15. 过度装配神经网络的最佳方法是什么?
- 16. 在SQL中存储圣经的最佳方式是什么?
- 17. 什么是使用jquery ui themeroller主题的最佳方式
- 18. 等待UI控件的最佳方式是什么?
- 19. 键入()的最佳方式是什么?
- 20. 什么是开源的最佳方式?
- 21. “投票”的最佳方式是什么?
- 22. 启动多个Sprite的Cocos2d动画的最佳方式是什么?
- 23. 从用户(控制台)获取n * n矩阵的最佳方式是什么?
- 24. 更新匹配公式以有条件格式的最佳方式是什么?
- 25. 衡量应用/活动启动时间的最佳方式是什么?
- 26. 限制值变化时启动动画的最佳方式是什么?
- 27. 在iPhone上进行自动UI测试的最佳方式是什么?
- 28. 在n-gram模型中n的经验发现最佳值是什么?
- 29. 用新字段更新Google数据存储的最佳方式是什么?
- 30. 什么是最近n秒内存储数据点的最佳数据结构
整洁。我只是在编制我想要看的节日清单 - 我忘记了我想学习Rx框架,这让我想起了。谢谢。 – 2009-12-18 15:13:56
我喜欢这个解决方案,即使流利的编程让我伤心。最重要的是它需要Rx库。 – Eric 2009-12-18 15:16:46