一、this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数

Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke();

在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误 的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界面显示。

正确的做法是将工作线程中涉及更新界面的代码封装为一个方 法,通过 Invoke 或者 BeginInvoke 去调用,两 者的区别就是一个导致工作线程等待,而另外一个则不会。

//用法1:无参数,无返回值
Action action = () =>{//刷新UI界面控件数据                      };this.Invoke(action);//用法2:2个参数,无返回值void ShowColor(string filePath, List<string> colorPicFileName)
{}Action<string, List<string>> action = ShowColor;this.Invoke(action, _colorFilePath, colorPicFileNames);//用法3:无参数,无返回值,直接实例化
void ShowInputPanel()
{}
this.Invoke(new Action(ShowInputPanel));//用法4:无参数,无返回值
//lambda表达式(不需要定义函数名,直接执行函数体, =>左边()内也可以输入参数, =>右边输入函数体)
this.Invoke(new Action(() => _previewControl.ShowE(_currentDirection, value)));//不阻塞UI界面线程的延时函数public static void DelayMs(int milliSecond){int start = Environment.TickCount;while (Math.Abs(Environment.TickCount - start) < milliSecond){Application.DoEvents();}}

C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数相关推荐

  1. CyclicBarrie(循环栅栏)的作用与用法

    CyclicBarrie的作用与用法 一.CyclicBarrie的作用 CyclicBarrier循环栅栏(循环屏障)是一个多线程同步的辅助工具类,它允许一组线程在到达某个等待屏障点(common ...

  2. PreTranslateMessage作用和用法

    PreTranslateMessage作用和用法 PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗体的消息都要通过这里,比較经常使用,当 ...

  3. java package作用_java import、package作用与用法

    java import.package作用与用法 有些人写了一阵子Java,可是对於Java 的package 跟import 还是不太了解很多人以為原始码 .java 档案中的import 会让编译 ...

  4. MySQL数据类型中DECIMAL的作用和用法

    在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法. 一般赋予浮 ...

  5. php中pre标签,html中pre标签与code标签的作用与用法

    HTML 标签 定义和用法 pre 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. 标签的一个常见应用就是用来表示计算机的源代码. 可以导致 ...

  6. PHP中的常见魔术方法功能作用及用法实例

    这篇文章主要介绍了PHP中的常见魔术方法功能作用及用法实例,本文讲解了构造函数和析构函数__construct()和__desctruct()以及属性重载(Property Overloading)_ ...

  7. java getxxx_java的invoke与getMethod方法用法

    和listener一起使用举例: 需要在控件中监听某个动作:比如button点击,画面滚动等 1.为控件定义一个属性:属性绑定一个方法 xxxProperty ="onPropertyXxx ...

  8. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法

    在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...

  9. chrome中Blackbox Script 黑盒脚本作用及用法

    chrome中Blackbox Script 黑盒脚本作用及用法 Blackbox Script功能 每天前端人员在调试代码的时候,都可能会遇到代码调试着会进入第三方库文件,带来很多没必要的调试,不方 ...

最新文章

  1. Android存储方式之SQLite
  2. CORS在Spring中的实现
  3. php this 代表什么,php中$this-)是什么意思?
  4. 基于机器学习的捡球机器人设计与实现(探索)第5篇——训练并使用Haar分类器(2019-03-02)
  5. 爱说说技术原理:前后台参数约定及逻辑代码(三)
  6. 使用Java解决您的数据科学问题
  7. android 流量统计工具,Android 统计应用流量的使用情况
  8. 5分绩点转4分_工作复盘|因为这5点,4月份目标没完成
  9. OPPO Find X继任者来了!Find Z曝光:搭载骁龙855
  10. django settings 定义的变量不存在_Django基础框架搭建
  11. 面试—每日一题(5)
  12. 资源丨用PyTorch实现Mask R-CNN
  13. tarjan 算法模板
  14. 拓端tecdat:Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
  15. 5分钟学会制作自动化脚本——自动化脚本辅助开发IDE——Selenium IDE介绍(测试工程师必备)
  16. w ndows7旗舰版怎么重装系统,windows7旗舰版iso怎么安装
  17. 抖音超级恶心的滑稽HTML源码
  18. PDF打开后却不能编辑要怎么办?
  19. html期末设计作业——品牌红酒销售网页模板(4页) html网页设计期末大作业_网页设计平时作业
  20. SpringUtil 工具类

热门文章

  1. EMC设计技巧及经验总结4:ESD防护布线指导
  2. 进行图像增广的15+种功能总结和Python代码实现
  3. 【UML统一建模思想】2万字超详细学习笔记(2)
  4. 大魔王程序员生成记#06.2#C语言习题
  5. 锂离子电池热失控的机理
  6. 读书笔记:《狼图腾》
  7. “筑爱助残 欢乐DIY”蒲公英志愿者走进残疾人之
  8. ijkplayer系列1:ijkplayer介绍
  9. 全球首份AR报告第二章:AR的工作原理
  10. 多节点Linux部署