代码改变世界

随笔档案-2011年12月

CLR属性、依赖属性与附加属性(WPF)

2011-12-20 21:54 by 木木子, 1212 阅读, 收藏,
摘要: 笔记大概CLR属性依赖属性附加属性CLR属性public class Human{ private int age; public int Age { get { return this.age; } set { if (value >= 0 && value <= 100) { this.age = value; } else { ... 阅读全文

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

2011-12-19 17:43 by 木木子, 513 阅读, 收藏,
摘要: 传统异步编程操作.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 木木子, 651 阅读, 收藏,
摘要: (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中 阅读全文

Binding的数据转换与校验(WPF)

2011-12-15 23:30 by 木木子, 635 阅读, 收藏,
摘要: 大概一些闲话Binding对数据转换Binding对数据校验闲话离上次做完Binding基础的笔记有段日子了。主要天气冷了,人的惰性就起作用了,打字真是手冷啊。但,这样懒下去也不是办法,男人就是要对自己狠点。就今晚了,一把鼻涕一把热茶地把Binding的剩余部分回顾下,把笔记也做了,fighting……Binding的数据校验Binding的Validation属性类型是Collection<ValidationRule>,即可以为一个Binding设置多个Validation条件。Validation类是一个抽象类,使用时需要创建派生类,并且实现它的Validation方法。Va 阅读全文

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

2011-12-12 13:22 by 木木子, 594 阅读, 收藏,
摘要: 笔记大概闲谈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 木木子, 739 阅读, 收藏,
摘要: 简要杂谈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 阅读全文