是不是因为没有切换到UI线程啊? 
你可以尝试一下把说跨线程调用的语句放入
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new DelegateHandle(delegate()
{}
这个里面试试?

解决方案 »

  1.   

    一般控件是属于窗体线程的,当在其他线程要改变控件的内容时,是不能直接用的,必须将操作invoke到窗体线程。具体实现参考以下代码段,代码引用自MSDN。
    // This delegate enables asynchronous calls for setting
            // the text property on a TextBox control.
            delegate void SetTextCallback(string text);
     private void SetText(string text)
            {
                // InvokeRequired required compares the thread ID of the
                // calling thread to the thread ID of the creating thread.
                // If these threads are different, it returns true.
                if (this.textBox4.InvokeRequired)
                {    
                    SetTextCallback d = new SetTextCallback(SetText);
                    this.Invoke(d, new object[] { text });
                }
                else
                {
                    this.textBox4.Text = text;
                }
            }