我收到以下错误
跨线程操作无效: 控制从其他线程访问 而不是它创建的线程。
这是来自wcf的回调。
我有一个textBox,我需要更新值和appendtext。 此值将从另一个线程返回并更新UI。
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));
}
以下崩溃!!
答案 0 :(得分:2)
您忘记了else
,因为您总是通过AppendText
更新控件的文本,而不仅仅是在非调用所需的时候。
而且,好吧,我认为你在这里遇到了一些问题:你是通过调用者设置成员变量,但在任何线程上更改实际的WinForm组件?您可能只想在Invoke上使用整个块。