跨线程操作无效:从创建它的线程以外的线程访问控制

时间:2010-02-10 15:02:53

标签: winforms

我收到以下错误

  

跨线程操作无效:   控制从其他线程访问   而不是它创建的线程。

这是来自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));


        }

以下崩溃!!

1 个答案:

答案 0 :(得分:2)

您忘记了else,因为您总是通过AppendText更新控件的文本,而不仅仅是在非调用所需的时候。

而且,好吧,我认为你在这里遇到了一些问题:你是通过调用者设置成员变量,但在任何线程上更改实际的WinForm组件?您可能只想在Invoke上使用整个块。