我有多個繁重的進程同時發生,我很困惑如何在單個進度條中顯示每個進程的進度。正如我在像Torrent這樣的軟件中看到的,他們將多進程的進度條分開。你能幫我創建這樣的進度條嗎?我的手裏還有telerik進度條。如何拆分多進程同時發生的進度條
任何幫助,將不勝感激。
我有多個繁重的進程同時發生,我很困惑如何在單個進度條中顯示每個進程的進度。正如我在像Torrent這樣的軟件中看到的,他們將多進程的進度條分開。你能幫我創建這樣的進度條嗎?我的手裏還有telerik進度條。如何拆分多進程同時發生的進度條
任何幫助,將不勝感激。
你可以使用一個單一的進度爲每個進程(即最容易)
要使用一個進度條的所有進程,你需要先計算整個工作,然後讓每個進程報告其進展到整個進展。
例
2過程:過程A被讀出2000條記錄和方法B被讀取6000個記錄。 要計算的總體進展情況:
progress = (2000/(2000 + 6000)) * (progressA/2000) +
(6000/(2000 + 6000)) * (progressB/6000);
一般:
totalProgress = sum for all progresses (totalEffortA/totalEffort) * (progressA/totalEffortA)
根據我的理解,你已經創建了一顆顆進度條的各個過程,你只是想有一個總結他們全部合而爲一。
如果這是你可以有附加的事件處理程序的每個進程的進展報告變更的情況下,和處理通知時,設置屬性爲:
var count = allProcesses.Count;
var all = allProcesses.Sum(p => p.Progress);
//You could replace the following with max = count * 100 if that's the case
var max = allProcesses.Sum(p => p.Max);
overallProgressBar.Minimum = 0;
overallProgressBar.Maximum = max;
overallProgressBar.Value = all;
注:假設0-100
是所有進程的進度範圍。
這樣你就可以假設所有的工作都是平等的。 – 2012-02-13 07:24:12
@Erno,一旦你獲得了單個進程的數據,它就沒有什麼區別。我已經更新了我的答案。 – Shimmy 2012-02-13 07:30:13
這不是我的意思。你假設工作A的100個進度等於工作B的100個進度。 – 2012-02-13 08:05:22