Winforms 跨线程操作无效:从创建控件的线程以外的线程访问控件
我得到以下错误 跨线程操作无效: 从其他线程访问的控件 而不是创建它的线程 这是来自wcf的回调 我有一个文本框,我需要更新该值并向其添加文本。 此值将从另一个线程返回并更新UIWinforms 跨线程操作无效:从创建控件的线程以外的线程访问控件,winforms,Winforms,我得到以下错误 跨线程操作无效: 从其他线程访问的控件 而不是创建它的线程 这是来自wcf的回调 我有一个文本框,我需要更新该值并向其添加文本。 此值将从另一个线程返回并更新UI public CarStatus CarState { get { return _carState; } set { _carState;= value;
public CarStatus CarState
{
get
{
return _carState;
}
set
{
_carState;= value;
CarStatus tmpCarState;=null;
if (txtResult.InvokeRequired)
{
txtResult.Invoke(new MethodInvoker(() => { tmpCarState;=null;= _carState;}));
}
txtResult.AppendText(string.Format("Car status is: {0}{1}", tmpCarState, Environment.NewLine));
}
下面的崩溃 您忘记了
else
,因为您总是通过AppendText
更新控件的文本,而不仅仅是在不需要调用时
而且,我认为您在这里有些错误:您通过调用程序设置成员变量,但在任何线程上更改实际的WinForm组件?您可能只是想在Invoke上删除整个块。谢谢您的回复。它的工作原理类似于BeginInvoke(newmethodinvoker(()=>txtCarState.AppendText(_carState));这就是你的意思吗?