2012-02-08 55 views
3

我有幾個LINQ查詢會根據各種過濾器轉移記錄(高達一百萬),並根據生成的過濾行項目上的特定列的值修改控件。我想實現線程化,但是我使用LINQ來執行查詢,而查詢本身就是延遲的來源,所以我相信無論如何,進度條會立即從0跳到100%。有沒有辦法解決這個問題?在LINQ查詢過程中提供用戶反饋

一個具體的例子是Windows窗體組合框項目基於用戶選擇的另一個ComboBox的特定列的不同值進行填充。這些項目用於動態構建另一個linq查詢,這些查詢用於自定義動態製圖工具。

+1

只是假冒的數字5%,13%,45%... 99%(兩分鐘)},窗戶一直都是這樣...... – gdoron 2012-02-08 20:01:39

+0

這不是一個有效的解決方案,所以我很高興在評論部分看到這一點。 – sammarcow 2012-02-08 20:06:15

回答

3

使用SkipTake一次只能載入幾條記錄。如果提前得到Count,則可以在每個查詢結束後提前進度欄。您需要在後臺線程中完成所有這些操作,以保持UI的響應,以便進度欄顯示更新。

+0

不要忘記正確地將UI更新編組到UI線程。 – 2012-02-08 20:19:59

+0

這隻會在db查詢佔用相對較小的總時間時才起作用。反饋僅顯示結果的處理。 – 2012-02-08 20:24:00

2

我想實現線程,但我使用LINQ來執行查詢,查詢本身是延遲的來源,所以我相信進度條會立即從0跳到100%。

所以主要部分是在Db上運行的查詢。這裏沒有任何反饋,你將不得不僞造它。你不會是唯一這樣做的人。

進度條不是(意圖是)精確的檢測,它是關於用戶安撫。

+0

+1「用戶安撫」:-) – Yahia 2012-02-08 20:20:04