我正在将一个大的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