我正在將一個大的Txt文檔讀入WPF應用程序中,以進行一些嚴重的交換/替換操作。這些文件實際上是3D STP模型,因此它們相當大,但我正在將它們作爲該項目的原始文本進行處理。這些文件被讀入列表以避免多次打開它們,並使比較更容易。將.TXT實時讀入列表框
無論如何,我試圖讓列表框動態滾動,因爲行被添加到它,ala控制檯窗口,因此用戶可以看到發生了一些事情,因爲計算可能需要一些時間取決於文件大小。我還添加了一個進度條來計數,因爲總行數是通讀的。
我的進度條和ListBox似乎都不會隨着工作進度而更新。最終的輸出完全落在列表框中,同時進度條從0-max開始。
這是我在做什麼的要點,這是相當簡單:
foreach (string Line in OriginalSTPFile.Lines)
{
string NewLine = EvaluateString(Line); //string the modified to whatever here
pBar.Value++; //increment progressbar
OutputWindow.Items.Add(NewLine); //add line to the ListBox
}
我只想列表框中的進度條實時的進展變化進行更新。我試過使用:
Dispatcher.BeginInvoke(new Action(() => OutputWindow.Items.Add(NewLine));
但是得到了同樣的結果。我需要更復雜的多線程方法嗎?我假設第一種方法會起作用,因爲我沒有產生任何交叉線程異常。
你是什麼意思與「實時」的僞代碼?什麼是相當大的?請同時發佈更新進度條的步驟功能。 – 2013-02-13 20:10:25
如同一樣,每當一條線被「評估」時,結果立即被打印到列表框中,並且相應地移動演算條。應該在下一行被評估之前發生。現在,該程序暫時掛起,然後所有信息同時出現。 – 2013-02-13 20:13:50
請看我的答案。它肯定會幫助你。 – 2013-02-13 20:43:32