我有幾個LINQ查詢會根據各種過濾器轉移記錄(高達一百萬),並根據生成的過濾行項目上的特定列的值修改控件。我想實現線程化,但是我使用LINQ來執行查詢,而查詢本身就是延遲的來源,所以我相信無論如何,進度條會立即從0跳到100%。有沒有辦法解決這個問題?在LINQ查詢過程中提供用戶反饋
一個具體的例子是Windows窗體組合框項目基於用戶選擇的另一個ComboBox的特定列的不同值進行填充。這些項目用於動態構建另一個linq查詢,這些查詢用於自定義動態製圖工具。
我有幾個LINQ查詢會根據各種過濾器轉移記錄(高達一百萬),並根據生成的過濾行項目上的特定列的值修改控件。我想實現線程化,但是我使用LINQ來執行查詢,而查詢本身就是延遲的來源,所以我相信無論如何,進度條會立即從0跳到100%。有沒有辦法解決這個問題?在LINQ查詢過程中提供用戶反饋
一個具體的例子是Windows窗體組合框項目基於用戶選擇的另一個ComboBox的特定列的不同值進行填充。這些項目用於動態構建另一個linq查詢,這些查詢用於自定義動態製圖工具。
使用Skip
和Take
一次只能載入幾條記錄。如果提前得到Count
,則可以在每個查詢結束後提前進度欄。您需要在後臺線程中完成所有這些操作,以保持UI的響應,以便進度欄顯示更新。
不要忘記正確地將UI更新編組到UI線程。 – 2012-02-08 20:19:59
這隻會在db查詢佔用相對較小的總時間時才起作用。反饋僅顯示結果的處理。 – 2012-02-08 20:24:00
我想實現線程,但我使用LINQ來執行查詢,查詢本身是延遲的來源,所以我相信進度條會立即從0跳到100%。
所以主要部分是在Db上運行的查詢。這裏沒有任何反饋,你將不得不僞造它。你不會是唯一這樣做的人。
進度條不是(意圖是)精確的檢測,它是關於用戶安撫。
+1「用戶安撫」:-) – Yahia 2012-02-08 20:20:04
只是假冒的數字5%,13%,45%... 99%(兩分鐘)},窗戶一直都是這樣...... – gdoron 2012-02-08 20:01:39
這不是一個有效的解決方案,所以我很高興在評論部分看到這一點。 – sammarcow 2012-02-08 20:06:15