博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WPF中UI线程和工作线程的交流

Posted on 2011-04-21 22:52  linFen  阅读(828)  评论(0编辑  收藏  举报

在WPF中,UI线程中的界面物体是不能被UI以外的线程修改的,如果你想在非UI线程中修改界面物体值的话,可以使用System.Windows.Threading.Dispatcher类中的Invoke方法

public void DoWork()
{
ThreadPool.QueueUserWorkItem((WaitCallback)
delegate(object o)  
            
{  //现在在非UI线程中
                bool isConnected = false;
                                               Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)
delegate()
                    
{
                        WriteMessageToWin(
"cannot connect to  server");
                    }
);

                }


 
private TextBlock WriteMessageToWin(string message)
        
{         
            tbTextBlock.Text 
= message;
}