雁过请留痕...
代码改变世界

非UI线程更新UI界面的各种方法小结

2012-08-18 15:58 by xiashengwang, 5520 阅读, 1 推荐, 收藏, 编辑
摘要:我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的。但是我们在进行异步操作时,经常需要将异步执行的进度报告给用户,让用户知道任务的进度,不至于让用户误认为程序“死掉了”,特别是对于Winform,WPF等客户端程序尤为重要。 那么我们要探讨的就是如何让非UI的任务线程更新UI界 阅读全文

Linq学习之旅——Linq to Objects之立即执行方法(下篇)

2012-08-11 21:20 by xiashengwang, 556 阅读, 0 推荐, 收藏, 编辑
摘要:1,ElementAt 方法2,ElementAtOrDefault 方法3,All 方法4,Any 方法5,Contains 方法6,Count 方法7,LongCount 方法8,Aggregate 方法9,Sum 方法10,Average 方法11,Min 方法12,Max 方法1,ElementAt 方法获取序列中指定索引的元素,如果索引超过范围将引发异常。 private void ElementAtDemo() { string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉" 阅读全文

Linq学习之旅——Linq to Objects之立即执行方法(上篇)

2012-08-11 18:00 by xiashengwang, 577 阅读, 0 推荐, 收藏, 编辑
摘要:1,ToArray 方法2,ToList 方法3,ToDictionary 方法4,ToLookup 方法5,SequenceEqual 方法6,First 方法7,FirstOrDefault方法8,Last 方法9,LastOrDefault 方法10,Single 方法11,SingleOrDefault 方法1,ToArray 方法从IEnumerable<T>创建一个数组。 string[] names = { "郭靖", "李莫愁", "黄蓉", "黄药师" }; var query = f 阅读全文

颜色分段显示,线性填充的一个Demo

2012-08-02 17:51 by xiashengwang, 1751 阅读, 1 推荐, 收藏, 编辑
摘要:1,指定一个开始颜色,一个结束颜色,进行填充。2,生成指定数量的,这两个颜色中间的过渡色,这个对地图表示等功能需要分段颜色表示的很有用。效果图:先看第一个功能,填充渐变的颜色:主要就是利用LinearGradientBrush这个画刷 lblStartColor.Click += new EventHandler(lblColor_Click); lblEndColor.Click += new EventHandler(lblColor_Click); void lblColor_Click(object sender, EventA... 阅读全文

一个关于字典查找引发的思考——BinarySearch

2012-08-02 12:20 by xiashengwang, 1983 阅读, 0 推荐, 收藏, 编辑
摘要:最近在一个e文网站的提问区看到一个非常有意思的问题,内容如下:有几组信号范围(range),每个范围对应一个位置(Position):Signal Strenth Position0-9 110-19 220-29 3要求很简单,就是比如输入一个15,找到它的Position为2。但要求不能用IF语句进行简单的判定,最好用类似于字典的查找。看见这个问题,你脑海中有什么样的方案?Dictionary?在实际工作中还是经... 阅读全文

GC垃圾回收——有用的函数和类

2012-08-01 16:10 by xiashengwang, 5597 阅读, 5 推荐, 收藏, 编辑
摘要:1,AddMemoryPressure和RemoveMemoryPressure 这两个方法主要用于本地资源,比如一个位图占用了50M本地内存,但是托管对象只包含一个HBitMap(4字节或8字节)。但CRL并不知道这个内存压力,它可能允许你分配数百个位图,因为它们占用的托管内存太少了。这两个方法的目的就是要告诉GC它实际的本地资源用了多少内存量,GC知道这个信息后会调整它的垃圾回收策略,当压力变大时,他就强制执行垃圾回收。 private void MemoryPressureDemo(int size) { //创建一组对象,并指定它们的... 阅读全文

《CLR via C#》笔记——垃圾回收

2012-07-31 20:58 by xiashengwang, 1268 阅读, 0 推荐, 收藏, 编辑
摘要:本篇目录1,垃圾回收的基本概念 1.1 小对象堆和大对象堆 1.2 垃圾回收中的“代” 1.3 堆和“代”的关系2,啥时执行垃圾回收?3,垃圾回收器是如何工作的? 3.1标记无效对象。 3.2 压缩阶段。 3.3 终结揭秘4 ,Dispose模式:强制对象清理资源1,垃圾回收的基本概念1.1 小对象堆和大对象堆 我们都知道,CLR将我们的引用类型分配到托管堆上。这里指的托管堆实际是一个笼统的称呼。它实际是由一个小对象堆(small object heap,SOH)和一个大对象堆(large object heap,LOH)组成的。为对象分配空间时,将对象分为小对象(small object). 阅读全文

《CLR via C#》笔记——异常和状态管理

2012-07-30 12:48 by xiashengwang, 2822 阅读, 0 推荐, 收藏, 编辑
摘要:目录一,定义异常二,异常处理机制 2.1 try块 2.2 catch块 2.3 finally块 2.4 CLS和非CLR异常三,System.Exception类四,抛出异常五,自定义异常类六,用可靠性换取开发效率七,指导原则和最佳实践 7.1 善用finally块 7.2 不要什么都捕捉 7.3 得体的从异常中恢复 7.4 从不可恢复的异常中回滚——维持状态 7.5 隐藏实现细节来维持契约八,未处理异常九,约束执行区(CER)十,代码契约一,定义异常 什么时候应该抛异常?当一个类型的成员(如方法,属性)不能完成任务时,就应抛出异常。面向对象的编程大大... 阅读全文

Linq学习之旅——Linq to Objects之延期执行方法(下篇)

2012-07-29 22:18 by xiashengwang, 1155 阅读, 0 推荐, 收藏, 编辑
摘要:目录1,Intersect 方法2,Except方法3,Range方法4,Repeat方法5,Empty方法6,DefaultIfEmpty方法7,Cast方法8,OfType方法9,AsEnumerable方法 本篇继续学习剩余的延期执行方法。1,Intersect 方法 Intersect 方法用于生成两个序列的交集。 string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" }; string[] names2 = { "郭靖&quo 阅读全文

Linq学习之旅——Linq to Objects之延期执行方法(上篇)

2012-07-29 17:54 by xiashengwang, 2937 阅读, 2 推荐, 收藏, 编辑
摘要:目录1,Take 方法2,TakeWhile 方法3,Skip 方法4,SkipWhile 方法5,Reverse 方法6,Distinct 方法7,Union 方法8,Concat 方法 LINQ to Objects是LINQ的基础,而LINQ to SQL、LINQ to XML是中间LINQ提供程序,他们主要是把数据源转换成LINQ to Objects兼容的类型,以便LINQ to Objects进行操作。LINQ to Objects就是直接对IEnumerable或泛型IEnumerable<T>集合进行查询。LINQ表达式是LINQ标准查询运算符的一部分,而LINQ 阅读全文