我的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. 更新後運行nodetool upgradedesstables的最佳方式是什麼?
- 3. 什麼是自動更新網站的最佳方式?
- 4. OnShow事件後自動啓動一個動作的最佳方式是什麼?
- 5. 什麼是啓動後臺進程的最佳方式,可以稍後訪問
- 6. 什麼是從android中的aysnc任務更新UI的最佳方式?
- 7. 從x509Certificate2啓動RSACryptoServiceProvider的最佳方式是什麼?
- 8. 什麼是啓動GrizzlyWebServer的最佳方式?
- 9. 啓動此程序的最佳方式是什麼?
- 10. 實現啓動屏幕的最佳方式是什麼?
- 11. 獲取Perl數組的最後N個元素的最佳方式是什麼?
- 12. 用Angular JS動態更新jQuery UI屬性的最佳方法是什麼?
- 13. 什麼是獲得第n個最後記錄的最佳方式?
- 14. 更新角度應用程序的最佳方式是什麼?
- 15. 什麼是更新大量帳戶的最佳方式
- 16. 什麼是更新數據庫列表的最佳方式?
- 17. 什麼是更新datagridview的最佳方式?
- 18. 什麼是更新分區的最佳方式?
- 19. 什麼是更新樹面板的最佳方式
- 20. 用dropDownList更新Yii2中GridView的最佳方式是什麼?
- 21. 什麼是更新TextMate軟件包的最佳方式?
- 22. 什麼是處理幾列更新的最佳方式
- 23. 什麼是更新ListView的最佳方式?
- 24. 什麼是更新SQL Server CE表的最佳方式?
- 25. 在Perl中獲得Epoch毫秒的最佳方式是什麼?
- 26. 每秒執行一次任務的最佳方式是什麼?
- 27. 首次啓動電影時啓動電影的最佳方式是什麼
- 28. 什麼是自動化後構建操作的最佳方式?
- 29. MVVM在命令之後更新UI的方式是什麼?
整潔。我只是在編制我想要看的節日清單 - 我忘記了我想學習Rx框架,這讓我想起了。謝謝。 – 2009-12-18 15:13:56
我喜歡這個解決方案,即使流利的編程讓我傷心。最重要的是它需要Rx庫。 – Eric 2009-12-18 15:16:46