【发布时间】:2011-11-11 14:29:08
【问题描述】:
我从 RichTextBox 收到 15.000 行(可能更多),我需要为每一行添加一些值。 这样做的最佳方法是什么,以免程序锁定?
目前,我正在处理作为线程运行的循环中的行:
public void Process()
{
string[] lines;
string line;
string foo = " baa";
if (richTextBox1.InvokeRequired)
{
lines = (string[])Invoke((ReadLines)delegate
{
return /* read .Lines[] from richTextBox1 */
});
int max = lines.Length;
for (int i = 0; i < max; i++)
{
line = lines[i];
if (..)
{
lines[i] += "foo";
}
}
Invoke((Update)delegate
{
/* set new lines to RichTextBox1 */
});
}
}
然后:
Thread th1 = new Thread(Process);
th1.Start();
但它仍然锁定。最好的方法是什么? 提前致谢。
【问题讨论】:
-
不幸的是,这就是野兽的本性 - 富文本框控件不打算容纳那么多行,分配将锁定 UI。我会认为“重新设计”而不是“解决方法”
-
是的。在添加之前进行预处理,但最后 - 文本 bos 不是为此而制作的,请获取商业/校对编辑器组件。
标签: c# .net richtextbox text-processing