普通方法调用,Invoke,begininvoke三者的区别总结及异步与同步的区别总结
(1)普通方法调用(直接调用)与Invoke()方法调用方法 使用的线程Id是一样的 即属于同步。
(2)BeginInvoke(<输入和输出变量>,AsyncCallback callback,object asyncState)方法调用方法 则是启用了新的线程Id 属于异步
可通过 Thread.CurrentThread.ManagedThreadId 获取当前线程的Id
*委托类型的BeginInvoke(<输入和输出变量>,AsyncCallback callback,object asyncState)方法
异步调用的核心, BeginInvoke(多线程能执行的原因)。
输入和输出变量:表式委托对应的实参。
第二个参数(AsyncCallback callback):回调函数,表示异步调用后自动调用的函数 ,共用一个线程id. AsyncCallback是一个委托 有一个参数(asyncState )
第三个参数(object asyncState):用于向回调函数提供参数信息。返回值:IasyncResult:异步操作状态接口,封装了异步执行中的参数。
EndInvoke监视BeginInvoke。委托类型的EndInvoke()方法:借助IasyncResult接口对象,不断查询异步调用是否结束。该方法知道异步调用的方法所有参数,所以,异步调用完毕后,取出异步调用的结果作为返回值。
对于同步和异步的总结:异步三大特点
(1)同步方法会出现“假死现象”即卡住界面,异步则不会 原因:异步启动了子线程执行任务,主线程得到释放
(2)同步速度慢,异步速度快 原因:异步启动了多个线程执行任务,占用更多的资源(异步时cpu瞬间上升)
(3)异步是无序的 原因:线程的启动和执行是由操作系统决定的,是无序的。可能每个子线程里面耗时不一样
普通方法调用,Invoke,begininvoke三者的区别总结及异步与同步的区别总结的更多相关文章
- Ajax中异步与同步的区别
同步可以解决,只有前一个请求结束后,当前请求才会发起.
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
[分析]浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang) 今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间 ...
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
今天关闭一个窗体,报出这样的一个错误"在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke.",这个不用多想,肯定是那个地方没有释放掉.既然碰到这个问题, ...
- Invoke()/BeginInvoke()区别
查看MSDN如下: Control..::.Invoke ---> 在拥有此控件的基础窗口句柄的线程上执行委托. Control..::.BeginInvoke ---> ...
- 安装SQL Server出现在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke的错误解决办法
以下是错误报告: 标题: SQL Server 安装程序失败. ------------------------------ SQL Server 安装程序遇到以下错误: 在创建窗口句柄之 ...
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
本文转载:http://blog.csdn.net/playing9c/article/details/7471918 http://blog.csdn.net/beelinkerlidejun/ar ...
- 手动调用run方法和普通方法调用没有区别
手动调用run方法和普通方法调用没有区别
- python中方法调用和函数调用的区别
函数调用: 传几个参数,就会有几个实参方法调用: 默认传递一个参数self,至少要定义一个形参
- C#测试对比不同类型的方法调用的性能
一. 测试方法调用形式 1. 实例方法调用 2. 静态方法调用 3. 实例方法反射调用 4. 委托方法的Invoke调用 5. 委托方法的DynamicInvoke调用 6.委托方法的BeginInv ...
随机推荐
- bzoj-4565-区间dp+状压
4565: [Haoi2016]字符合并 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 542 Solved: 253[Submit][Status ...
- web 移动端事件总结
1.https://www.jianshu.com/p/6f85e957a725 (web 移动端事件总结)
- 第一个mpvue小程序开发总结
前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最 ...
- Springfox与swagger的整合使用(十七)
一.前言 让我们先理一下springfox与swagger的关系. swagger是一个流行的API开发框架,这个框架以“开放API声明”(OpenAPI Specification,OAS)为基础, ...
- JS获取当前时间到30天之后的日期区间
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- EPANET头文件解读系列5——TYPES.H
/************************************************************************ ...
- POJ 3279 Fliptile 状态压缩,思路 难度:2
http://poj.org/problem?id=3279 明显,每一位上只需要是0或者1, 遍历第一行的所有取值可能,(1<<15,时间足够)对每种取值可能: 对于第0-n-2行,因为 ...
- 201621123006 《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至少2种 ...
- Field 'id' doesn't have a default value 原因
Field 'id' doesn't have a default value昨晚做项目的时候遇到一个问题,在测试数据存储的时候老是报Field 'id' doesn't have a default ...
- iOS 关于时间天数星期月份的总结
#import <Foundation/Foundation.h> @interface NSDate (SLExtend) // 判断是否是本周更早 - (BOOL)isThisWeek ...