zoukankan      html  css  js  c++  java
  • 简单介绍.Net3.0 中跨线程访问控件

    这两天用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); 
       } 
       } 
      }
  • 相关阅读:
    连接多台机子的多个数据库webconfig
    md5
    JavaScript substring() 方法
    Coolite ComboBox 模糊查询
    2010暴强语录
    Response.ContentType 说明
    C#得到磁盘信息
    Coolite Toolkit 1.0版本在线demo
    关于IT人职业道德的反思(转)
    Coolite TextField添加回车事件
  • 原文地址:https://www.cnblogs.com/aspnetjia/p/5148342.html
Copyright © 2011-2022 走看看