C# 如何修复richtextbox中的{无法计算表达式,因为本机框架位于调用堆栈顶部。}
我试图在richtextbox中显示一个大文本文件,我在程序中使用backgroundworker来摆脱死锁。C# 如何修复richtextbox中的{无法计算表达式,因为本机框架位于调用堆栈顶部。},c#,C#,我试图在richtextbox中显示一个大文本文件,我在程序中使用backgroundworker来摆脱死锁。 当我运行此行的程序值时 this.txtText.Text+=Text+“\r\n” 是 {Text=无法计算表达式,因为本机框架位于调用堆栈的顶部。} 我想richtextbox无法加载我的文件。 我该怎么办 private void bgworker_DoWork(object sender, DoWorkEventArgs e) { lines = File.ReadAl
当我运行此行的程序值时
this.txtText.Text+=Text+“\r\n”代码>
是
{Text=无法计算表达式,因为本机框架位于调用堆栈的顶部。}
我想richtextbox无法加载我的文件。
我该怎么办
private void bgworker_DoWork(object sender, DoWorkEventArgs e)
{
lines = File.ReadAllLines(txtPath.Text);
foreach (string line in lines)
{
this.SetText(line);
}
}
private void SetText(string text)
{
if (this.txtText.InvokeRequired)
{
txtText.Invoke((ThreadStart)(() => SetText(text)));
}
else
{
this.txtText.Text += text + "\r\n";
}
}
BackgroundWorker
使用单独的线程进行处理;通常,您不会在DoWork
处理程序中更新ui
您需要在DoWork
函数中完成所有后台处理,并等待调用RunWorkerCompleted
。
您需要使用RunWorkerCompleted
更新ui
private void bgworker_DoWork(object sender, DoWorkEventArgs e)
{
lines = File.ReadAllLines(@"txtPath.Text");
}
private void bgworker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
foreach (string line in lines)
{
this.txtText.Text += (line + "\r\n");
}
}
我发现我的问题与richtextbox无关。我改变了数据结构,使用列表结构,而不是数组和字符串生成器,所以所有的事情都是固定的
StringBuilder strb = new StringBuilder();
private void bgworker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
List<string> list = new List<string>();
for (int i = 0; i < lines.Length; i++)
{
string line=lines[i];
list.Add(line);
}
foreach (string s in list)
{
strb.Append(s);
}
txtText.Text = strb.ToString();
}
StringBuilder strb=new StringBuilder();
私有void bgworker\u RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e)
{
列表=新列表();
对于(int i=0;i
您的问题不清楚。你能为你的问题添加更多的信息吗?richtextbox不能加载我的整个文本文件。我的文本文件是25mb。当我调试我的程序时,richtextbox不显示我的文本,我的程序也不完整。我在其中使用“全部中断”,并发现在richtextbox中有一件事是错误的,我按你的方式做,但richtextbox不会再次加载整个文件