代码改变世界

随笔分类 -  .NET Framework

回顾 .NET 3.0/3.5特性(1)

2012-05-20 16:16 by 木木子, 249 阅读, 收藏,
摘要: Object Initializers 对象初始化器 之前,经常这样初始化一个对象: User user = new User(); user.Age = 23; user.Name = "sanity";有了3.0后,就这样初始化对象了: User user = new User { Age = 23, Name = "Sanity" };对象初始化器把... 阅读全文

Thread 编程:简明(1) - 协作式取消 VS 线程终止

2012-02-02 14:54 by 木木子, 1625 阅读, 收藏,
摘要: 之前,我就开始关注Thread的知识。看过计算限制异步操作、I/O限制异步操作、Task、Parallel、APM、AsyncEnumerator…也做了相应的笔记。可是,具体Coding起来,还是会感到举步艰难。Why?复杂的知识让我复杂的想问题。上午,看了Jimmy Zhang的如何在30岁前年薪超过30万,说到“我发现越是真理,就越是趋于简单”。也许,最好的是简单的,关键在于,你愿不愿意,能不能这样去做。这里,不讲Thread的基本知识了。就陆续举出几个不同方法实现的例子,比较下,会发现简明才是美。(以下例子中,没有充分考虑到performance hit,请指正!)协作式取消 VS 线 阅读全文

异步编程相关的APM、Lambda、CCR、AsyncEnumerator(CLR)

2011-12-19 17:43 by 木木子, 518 阅读, 收藏,
摘要: 传统异步编程操作.NET平台的异步编程方式是APM(Asynchronous Programing Model,异步编程模式)。就是常见的BeginOperation和EndOperation二段式调用,并使用回调函数(AsyncCallback)和异步状态(IAsyncResult)。简单例子:FileStream fs = new FileStream(@"C:\Data.txt", FileMode.Open, FileAccess.Read, FileShare.Read, 8192, FileOptions.Asynchronous);Byte[] data = 阅读全文

I/O限制异步操作-Windows是如何执行I/O操作(CLR)

2011-12-18 11:26 by 木木子, 657 阅读, 收藏,
摘要: (copy from 《CLR via C#》Chapter 27)如图所示,用FileStream访问磁盘文件,然后用FileStream's Read方法从该File读取Data。当调用FileStream's Read方法时,当期线程将托管Code转换为本地/用户代码,调用Win32的ReadFile方法(#1)。在Win32的ReadFile方法中初始化一个结构体叫做IRP(I/O Request Packet)#2。IRP内包含了File的句柄,偏移量,Data存储地址等等。Win32的FileStream接下来调用Windows的核心代码,并传入IRP。根据IRP中 阅读全文

计算限制异步操作的其他知识-Parallel、PLinQ、Timer(CLR)

2011-12-12 13:22 by 木木子, 601 阅读, 收藏,
摘要: 笔记大概闲谈Parallel类Parallel与LINQTimer类闲谈前不久,把CLR via C#的Chapter 26 Computer-Bound Asynchronous Operations内容看完了,接着往下看I/O-Bound Asynchronous Operations,到了Jeffrey介绍Wintellect's .NET Power Threading Library的类库,觉得看得甚是吃力。只好停停脚步,消化消化,回顾下Thread的基础,接着做下笔记,所谓“温故而知新”。Parallel类在命名空间System.Threading.Tasks下有个静态类P 阅读全文

Thread编程:Task(CLR)

2011-12-02 11:13 by 木木子, 745 阅读, 收藏,
摘要: 简要杂谈TaskTask的简单例子取消TaskTask自动运行子Task深入TaskTask工厂Task Schedulers杂谈Task在上篇中用了ThreadPool’s QueueUserWorkItem方法很简单的实现了.NET的多线程编程。但,用线程池是用限制的:线程池不会告诉你的方法是否完成;线程池也没有返回值。Task的出现有效地解决了这两个问题。Task的功能很强大,一下列出Task的构造函数:Task(Action)Task(Action, CancellationToken)Task(Action, TaskCreationOptions)Task(Action<Ob 阅读全文

Thread基础-计算限制的异步操作(CLR)

2011-11-28 23:41 by 木木子, 688 阅读, 收藏,
摘要: 本章笔记内容:闲话CLR线程池基础;执行简单的计算限制操作;执行上下文;协作式取消;闲话该笔记记录的是Jiffrey Richter《CLR via C#》 3rd Edition的chapter 26 Compute-Bound Asynchronous Operations的前四节内容。Jiffrey Richter《CLR via C#》3rd Edition下载地址:这里 或者 wowebook中找。在这里你能过找到一些简单的执行异步操作的例子。CLR线程池基础所谓线程池,通俗地讲,就是一大堆线程的集合,可以给你的应用程序所使用。但是,线程池刚初始化时,是没有一个线程的。主要是因为,太 阅读全文