Winform下:

public delegate void UpadataTextCallBack(string str,TextBox text);
public void UpadtaText(string str, TextBox text)
{
  if (text.InvokeRequired)
  {
    UpadataTextCallBack upadataTextCallBack = UpadtaText;
    text.Invoke(upadataTextCallBack, new object[] {str, text});
  }
  else
  {
    text.Text = str;
  }
}

  

然而在WPF下,并不支持Control.InvokeRequired。需要调用Dispatcher.Invoke()方法。

在 WPF 中,只有创建 DispatcherObject 的线程才能访问该对象。例如,一个从主 UI 线程派生的后台线程不能更新在该 UI 线程上创建的 Button的内容。为了使该后台线程能够访问 Button 的 Content 属性,该后台线程必须将此工作委托给与该 UI 线程关联的 Dispatcher。它使用Invoke 或BeginInvoke完成。Invoke是同步,BeginInvoke 是异步。该操作将按指定的 DispatcherPriority 添加到 Dispatcher 的事件队列中。

代码实例:

public delegate void UpadataTextCallBack(string str,TextBox text);public void UpadtaText(string str, TextBox text)
{if (!Dispatcher.CheckAccess()){Dispatcher.Invoke(DispatcherPriority.Send, new setListTextCallBack(UpadtaText),str,text);return;}   text.Text = str;
}

  

转载于:https://www.cnblogs.com/dranched/p/5019662.html

WinForm与WPF下跨线程调用控件相关推荐

  1. 多线程总结之旅(12):跨线程调用控件的几种方式

    本来是写完线程池就结束多线程总结之旅系列的,但是想想平时在项目中用到线程仅仅不够的,为什么这么说呢?举个例子:我们有一个函数,它的功能就是加载数据,然后绑定到datagridview.现在我们开启一个 ...

  2. C# 跨线程调用控件

    在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...

  3. 跨线程调用控件之MethodInvoker

    这是一部分重要的代码,用VS2005通过. 使用到两个控件,一个按钮button1,一个标签label1. private void button1_Click(object sender, Even ...

  4. winform使用多线程时跨线程访问控件

    之前写winform用多线程,在子线程里访问窗体控件需要用委托,由于委托使用不熟练,在网上找的各种方法都觉得太复杂看不懂,后来发现一种写法如下: if (pictureBox1.InvokeRequi ...

  5. c# winform InvokeRequired 解决跨线程访问控件

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它. Windows 窗体中 ...

  6. WinForm中新开一个线程操作窗体上的控件(跨线程操作控件)GOOD

    http://www.cnblogs.com/joey0210/p/3450379.html 最近在做一个winform的小软件(抢票的...).登录窗体要从远程web页面获取一些数据,为了不阻塞登录 ...

  7. C#跨线程操作控件的线程安全方法

    C#跨线程操作控件的线程安全方法 在C#中,经常用到这样一个场景,Windows Form程序启动一个工作者线程执行一部分工作,这样做是为了避免速度慢的工作如果直接调用会使得主Form停止响应一段时间 ...

  8. 跨线程取出控件的值的写法(不是跨线程赋予控件值)

    //这个方法是跨线程取出控件的值,不是跨线程赋予控件值private delegate void DelegateGetControl(各种参数);private void GetControl(各种 ...

  9. c#跨线程操作控件(有UI操作)|及多线程操作

    仅记录(好多大佬都会): 跨线程操作UI控件 ※在.NET2.0之后为了线程之间的安全,不允许跨线程操作控件,最简单的解决办法是禁止检查,但一般不猜用此方法,会造成各线程之间的混乱,可用作临时调试使用 ...

  10. c#使用MethodInvoker解决跨线程访问控件

    c#使用MethodInvoker解决跨线程访问控件 .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线程访问作检查,Control.CheckForIlle ...

最新文章

  1. Android开发教程 - 使用Data Binding(二)集成与配置
  2. [微信小程序]给data的对象的属性赋值
  3. TF-IDF(term frequency–inverse document frequency)
  4. solr4 mysql自动更新_(solr系列:五) solr定时实时重建索引和增量更新
  5. k8s高可用集群_搭建高可用集群(部署master2和node节点)---K8S_Google工作笔记0058
  6. mysql 导出过长的数字列时变科学计数法问题解决办法
  7. Q-Fish 升级技嘉主板BIOS
  8. 水表188协议测试软件,水表下行通信规约标准188协议-V1.5标准版.pdf
  9. jenkins备份恢复
  10. Hbase2.4.1集群安装:HMaster自动挂掉问题终于解决了
  11. 推荐系统系列:新浪搜索团队FiBiNET理论和代码实现
  12. 济南商讯在线计算机,迅时IP话机 NRP2000W
  13. 边云协同的优点_边缘计算的云边协同
  14. 交房后,如何办理产权证、土地证?
  15. 公众号怎么设置滑动文字_这种微信公众号里面滑动是怎么操作的?
  16. [NAS] Synology (群晖) DSM7.0 使用自定义供应商DDNS
  17. 交货状态html什么意思,Marc Jacobs The Uptown 手提包
  18. 逆向工具/反编译工具 集合
  19. 14-6 使用 glade 完成布局
  20. 位运算 - 多个整形变量的合并和拆分

热门文章

  1. c语言计算总分和平均分float,用C语言编程平均分数
  2. Hbase table CRUD操作及scala编程
  3. java 获取及修改系统变量
  4. TinyML与Tensor Flow Lite的关系
  5. profile和bashrc
  6. 简述C#中IO的应用 RabbitMQ安装笔记 一次线上问题引发的对于C#中相等判断的思考 ef和mysql使用(一) ASP.NET/MVC/Core的HTTP请求流程...
  7. 对话中国AI先锋,生态科技岛首秀深圳
  8. 过目不忘JS正则表达式(转)
  9. date命令 简单使用
  10. Git详解之二 Git基础(第二部分)