我试图在 richtextbox 中显示一个大文本文件,我在我的程序中使用 backgroundworker 来避免死锁。
当我运行这一行的程序值时
this.txtText.Text += text + "\r\n";
是
{Text = 无法计算表达式,因为 native 框架位于调用堆栈的顶部。}
我认为 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");
}
}
关于c# - 如何修复 { 无法评估表达式,因为 native 框架位于调用堆栈的顶部。} 在 richtextbox 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54402177/