读书笔记 C#委托的BeginInvoke、EndInvoke之浅析
c#中有一种类型叫委托,它是一种引用类型。可以引用静态与非静态的方法,且这些方法的参数列表和返回值类型必须与所声明的委托一致。
委托引用的方法可以通过BeginInvoke和EndInvoke来异步进行调用。
首先呈上代码案例:
//声明委托
public delegate string MethodDel(string param); //定义需要被委托引用的方法
public static string DoSth(string param) {
string rc = ""; try{
//执行一些操作
}
catch(Exception ex){
} return rc;
} //-------------------------------------------------------
MethodDel method = DoSth; //BeginInvoke方法被调用以后,系统会自动产生一个后台线程去异步执行DoSth方法
IAsyncResult asyncResult = method.BeginInvoke("测试参数", null, null); //这里的代码不会被上面那个BeginInvoke阻塞,会被同步被调用
//ToDo...... //代码执行到这里就会被阻塞,且等待被BeginInvoke异步执行的方法返回,并获取返回值
//这里不得不说明一件事,无论是被BeginInvoke异步执行方法的耗时长,还是上面的那个ToDo的耗时长,
//反正到了EndInvoke这里,都得等待上面的代码执行完毕了,才能执行EndInvoke方法。
//result是被委托引用DoSth方法的返回结果
string result = method.EndInvoke(asyncResult);
//被委托引用的方法DoSth在此已经被执行完毕!
读书笔记 C#委托的BeginInvoke、EndInvoke之浅析的更多相关文章
- C# 对委托的BeginInvoke,EndInvoke 及Control 的BeginInvoke,EndInvoke 的理解
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 转:C# 对委托的BeginInvoke,EndInvoke 及Control 的BeginInvoke,EndInvoke 的理解
转载自:http://www.cnblogs.com/easyfrog/p/3141269.html using System; using System.Collections.Generic; u ...
- [Clr via C#读书笔记]Cp17委托
Cp17委托 简单介绍 delegate回调函数机制,可以理解存储函数地址的变量类型: 类型安全: 引用类型支持逆变和协变: 回调 静态方法,实例方法 委托的本质 所有的委托都派生自System.Mu ...
- 2019.03.26 读书笔记 关于 invoke与begininvoke
invoke与begininvoke是同步委托和异步委托,但是有两种使用情况: 1. control中的invoke.begininvoke. 2. delegrate中的invoke.beginin ...
- 读书笔记 C# 接口中的索引器之浅析
在C#中,可以在类.结构或接口中用this关键字声明索引器,在索引器内部用get或set访问器访问类中集合的某项值.因此可以将索引器看作是类的属性一样去定义.索引器常用定义格式如下: public i ...
- 读书笔记 C# Linq查询之group关键字浅析
在C#中,自从有了Linq查询表达式后,程序员对可被迭代的序列或列表执行一系列的筛选.排序.过滤.分组.查询等操作.本文章所要讲述的是group关键字. Linq查询表达式,是以from关键字开头,以 ...
- 《C#从现象到本质》读书笔记(六)第8章委托和事件
<C#从现象到本质>读书笔记(六)第二部分 C#特性 第8章委托和事件 从这一部分开始,知识点就相对少了,重要的是代码练习.奈何太高深的代码平常不怎么用,这些特性也不是经常写代码的. 委托 ...
- 《C#图解教程》读书笔记之五:委托和事件
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执 ...
- 委托的BeginInvoke和EndInvoke方法
.NET Framework 允许异步调用任何方法,为了实现异步调用目标,需要定义与被调用方法具有相同签名的委托.公共语言运行时会自动使用适当的签名为该委托定义 BeginInvoke 和 EndIn ...
随机推荐
- Virtualbox主机和虚拟机之间文件夹共享及双向拷贝
把文件发到VirtualBox的方法有很多,下面推荐两种: 1.把要共享的文件夹挂载到虚拟机某一个文件上: (1)打开虚拟机的设置,点击左边的“共享文件夹”,点击带加号的文件按钮,在文件夹路径选择要共 ...
- datatabe 与string
DataTable到string /// <summary> /// DataTable 到 string /// </summary> ...
- centos 下卸载mysql
查看当前已安装服务 [root@localhost]# rpm -qa|grep -i mysqlMySQL-server-5.6.36-1.rhel5.x86_64qt-mysql-4.8.5-13 ...
- 混合测序(Pooling)
什么是高通量测序技术中的多重测序? 多重测序是指将带有特殊分子标签(barcode或者index)的不同来源的DNA标本,放入一个反应体系进行测序的方法.与一次检测一种来源的DNA相比,多重检测通过分 ...
- C# ftp 上传、下载、删除
public class FtpHelper { public static readonly FtpHelper Instance = new FtpHelper(); /// <summar ...
- 384. Shuffle an Array(java,数组全排列,然后随机取)
题目: Shuffle a set of numbers without duplicates. 分析: 对一组不包含重复元素的数组进行随机重排,reset方法返回最原始的数组,shuffle方法随机 ...
- GPLT L2-004 这是二叉搜索树吗?
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192 类似题目有FBI树 这两个题有个小 ...
- 『MXNet』第一弹_基础架构及API
MXNet是基础,Gluon是封装,两者犹如TensorFlow和Keras,不过得益于动态图机制,两者交互比TensorFlow和Keras要方便得多,其基础操作和pytorch极为相似,但是方便不 ...
- 6月13 ThinkPHP框架基础
ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...
- hdu-6438-贪心
Buy and Resell Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...