BackgroundWorker C#从线程到文本字段的访问,(执行:无法更改只读属性)

时间:2018-08-11 18:26:02

标签: multithreading backgroundworker

亲爱的论坛用户。

我为一个问题而苦恼,因为我在应用程序BackgroundWorker中使用了多线程

在DoWork中,有很多代码,我将举一个实现的示例:

if (htmleditor.InvokeRequired)
{

    this.Invoke(new MethodInvoker(() => mmMessage.BodyHtml = htmleditor.Content.GetFormattedPlainText()));

}

从代码中可以很清楚地了解到,正在做什么,我分配了mmMessage.BodyHtml,即htmleditor编辑器的格式化文本值。

出了什么问题

1。如果我在没有BackGroundWorkera的情况下执行代码,则在mmMessage.BodyHtml中以应写的文字写..

2。。如果与BackGroundWorker一起使用,则它无法从编辑器获取文本,因此...我检查InvokeRequired 并相应地控制DoWork中的htmleditor,这是必需的..,然后我收到一个错误,提示不能为属性mmMessage.BodyHtml分配值。它是只读的:

“无法更改只读消息。”

我尝试了以下代码:

if (htmleditor.InvokeRequired)
{

    this.BeginInvoke(new MethodInvoker(() => mmMessage.BodyHtml = htmleditor.Content.GetFormattedPlainText()));

}

专业人士谁知道这是异步引起的,并且不希望完成。实际上,即使文本处于受控状态,他也不会阅读(如果不是这样,则是正确的)。

这是问题所在,请帮我确定:

  • 没有多线程,一切都分配得很好, 当我为属性分配值时:

    mmMessage.BodyHtml = htmleditor.Content.GetFormattedPlainText()

-使用多线程,会发生错误

mmMessage.BodyHtml(错误:“无法更改只读消息。”

-Invoke方法没有帮助..

也许我错过了什么?请帮助

0 个答案:

没有答案