为什么在循环期间追加到TextBox.Text每次迭代都占用更多内存?
简短问题 我有一个运行18万次的循环。在每次迭代结束时,都应将结果附加到TextBox,并实时更新。 使用MyTextBox.Text += someValue将导致应用程序占用大量内存,并且在记录了数千条之后耗尽了可用内存。 有没有一种更有效的方式将文本附加到TextBox.Text18万次? 编辑我真的不在乎这种特殊情况的结果,但是我想知道为什么这似乎是一个内存消耗,以及是否存在一种将文本追加到TextBox的更有效的方法。 长(原始)问题 我有一个小应用程序,可以读取CSV文件中的ID号列表,并为每个文件生成PDF报告。生成每个pdf文件后,将在其后ResultsTextBox.Text附加已处理且已成功处理的报告的ID号。该进程在后台线程上运行,因此,在处理项目时,ResultsTextBox会实时更新 我目前正在针对180,000个ID号运行该应用程序,但是随着时间的流逝,该应用程序占用的内存呈指数增长。它的开始时间约为90K,但是大约3000条记录占用了大约250MB的内存,而4000条记录则占用了大约500 MB的内存。 如果我注释掉对“结果”文本框的更新,则内存保持相对稳定,大约为90K,因此我可以假定写入ResultsText.Text += someValue是导致它消耗内存的原因。 我的问题是,为什么呢?将数据追加到不占用内存的TextBox.Text的更好方法是什么? 我的代码如下所示: try { report.SetParameterValue("Id", id); report.ExportToDisk(ExportFormatType.PortableDocFormat, string.Format(@"{0}\{1}.pdf", new object[] { outputLocation, id})); // ResultsText.Text += string.Format("Exported {0}\r\n", id); } catch (Exception ex) { ErrorsText.Text += string.Format("Failed to export {0}: {1}\r\n", new object[] { id, ex.Message …