.net 委托的简化语法
1. 不需要构造委托对象
ThreadPool.QueueUserWorkItem:通过线程池
public static void WorkItem()
{
ThreadPool.QueueUserWorkItem(SomeAsyncTask, );
} public static void SomeAsyncTask(object o)
{
Console.WriteLine("SomeAsyncTask:{0}", );
}
2. 不需要定义回调方法(lambda 表达式):
public static void CallbackWithouNewingADelegateObject()
{
ThreadPool.QueueUserWorkItem(
obj => Console.WriteLine("SomeAsyncTask:{0}", obj),
);
}
3. 局部变量不需要手动包装到类中即可传给回调方法。
public static void UsingLocalVariablesInTheCallbackCode(int numToDo)
{
int[] squares = new int[numToDo];
AutoResetEvent done = new AutoResetEvent(false); for (int n = ; n < squares.Length; n++)
{
ThreadPool.QueueUserWorkItem(
obj => { int num = (int)obj; squares[num] = num * num;
if (Interlocked.Decrement(ref numToDo) == )
done.Set();
}, n
);
} done.WaitOne(); for (int n = ; n < squares.Length; n++)
{
Console.WriteLine("Index {0} ,square={1}", n, squares[n]);
} }
.net 委托的简化语法的更多相关文章
- 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包
0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...
- Swift - 35 - 使用闭包简化语法
//: Playground - noun: a place where people can play import UIKit // 初始化一个整数数组 var arr = [1, 3, 5, 7 ...
- C# · 委托语句简化演变
1.委托基础语句形式 namespace QLVision { delegate void dHelp();//定义委托 static class Program { /// <summary& ...
- C#知识点记录
用于记录C#知识要点. 参考:CLR via C#.C#并发编程.MSDN.百度 记录方式:读每本书,先看一遍,然后第二遍的时候,写笔记. CLR:公共语言运行时(Common Language Ru ...
- 关于C#匿名方法
作者 陈嘉栋(慕容小匹夫) 阅读目录 0x00 前言 0x01 不必构造委托对象 0x02 匿名方法初探 0x03 使用匿名方法省略参数 0x04 匿名方法和闭包 0x05 匿名方法如何捕获外部变量 ...
- 使用匿名委托,Lambda简化多线程代码
使用匿名委托,Lambda简化多线程代码 .net中的线程也接触不少了.在多线程中最常见的应用莫过于有一个耗时的操作需要放到线程中去操作,而在这个线程中我们需要更新UI,这个时候就要创建一个委托了 ...
- .NET面试题系列[7] - 委托与事件
委托和事件 委托在C#中具有无比重要的地位. C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括但不限于)winform,wpf中的各种事件都有着委托的身影.C#中如果没有了事件,那 ...
- 《C#图解教程》读书笔记之五:委托和事件
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执 ...
- .NET面试题解析(05)-常量、字段、属性、特性与委托
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 弱小和无知不是生存的障碍,傲慢才是!——<三体> 常见面试题目: 1. const和reado ...
随机推荐
- 14_java之变量|参数|返回值|修饰符
01java中的文档注释和制作 * A: 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其 他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@ ...
- idea展现目录清晰方式
- leetcode720
public class Solution { public string LongestWord(string[] words) { var maxlist = new List<string ...
- GNU/Linux操作系统总览
计算机科学本科的专业课包括高等数学.离散数学.模拟电子技术.数字电子技术.微机原理.汇编语言原理.高级程序语言.操作系统原理.高级编译原理.嵌入式原理.网络原理.计算机组成与结构等诸多科目.GNU计算 ...
- MySQL 主从同步失败,数据表修复
问题描述: 接到报警称一台 MySQL 从库同步失败.登录服务器查看错误日志信息如下: Last_Error: Error 'Incorrect key file for table './bfcc/ ...
- druid 连接池的配置
dataSource配置 <!-- 基于Druid数据库链接池的数据源配置 --> <bean id="dataSource" class="com ...
- 前端开发之JavaScript HTML DOM理论篇二
主要内容: 1.HTML DOM元素 2.HTML DOM事件 一.DOM元素 主要操作有添加.删除和替换HTML元素 1.创建新的HTML元素 (1)方法一: appendChild() 追加 如 ...
- MySQL数据库篇之单表查询
主要内容: 一.单表查询的语法 二.关键字的执行优先级 三.简单查询 四.where约束 五.分组查询 group by 六.having过滤 七.查询排序 order by 八.限制查询的记录数 l ...
- C#中使用OracleTransaction
1. OracleTransaction类的概述(from msdn ) 应用程序通过针对OracleConnection对象调用 BeginTransaction 来创建OracleT ...
- linux shell 脚本攻略学习 -- head命令详解, tail命令详解
当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...