网页教学网
 当前位置: 网页教学网 >> 网络编程 >> ASP.NET编程技术 >> 简单介绍.Net3.0 中跨线程访问控件
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

简单介绍.Net3.0 中跨线程访问控件

http://www.webjx.com  更新日期:2007-10-18 11:28  出处:博客园  作者:周银辉

  这两天用WPF做一个项目的UI部分时,发现跨线程地访问了UI控件,自然地报异常了。当时找了半天也没在控件中找到InvokeRequired属性和Invoke方法,郁闷之极.....最后发现在.net3.0中,这有所改变了。

  替代InvokeRequired的方法是DispatcherObject.CheckAccess()或DispatcherObject.VerifyAccess()方法,用于指示当前线程是否可以直接访问控件。

  替代Invoke的方法是DispatcherObject.Dispatcher.BeginInvoke(...)方法。

  参考代码:

  // Uses the DispatcherObject.CheckAccess method to determine if
  // the calling thread has access to the thread the UI object is on
  private void TryToUpdateButtonCheckAccess(object uiObject)
  {
   Button theButton = uiObject as Button;
  
   if (theButton != null)
   {
   // Checking if this thread has access to the object
   if(theButton.CheckAccess())
   {
   // This thread has access so it can update the UI thread
   UpdateButtonUI(theButton);
   }
   else
   {
   // This thread does not have access to the UI thread
   // Pushing update method on the Dispatcher of the UI thread
   theButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
   new UpdateUIDelegate(UpdateButtonUI), theButton);
   }
   }
  }

关键词:.Net3.0,跨线程,访问,控件
推荐给好友】【关闭】【收藏本文
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为