
A. .NET Framework
文章平均质量分 92
artech
这个作者很懒,什么都没留下…
展开
-
[原创] 难道调用ThreadPool.QueueUserWorkItem()的时候,真是必须调用Thread.Sleep(N)吗?
开门见山,下面的例子中通过调用ThreadPool.QueueUserWorkItem(WaitCallback callBack, object state)的方式实现异步调用: 1: class Program 2: { 3: static void Main(string[] args) 4: { 5: List acti原创 2009-05-22 09:11:00 · 1971 阅读 · 0 评论 -
[原创].NET Framework:用Coding证明Application Domain的隔离性
Application Domain可以看作是一个Assembly的逻辑容器。在程序执行过程中,如果遇到需要的Type并没有定义在已经加载的Assemblies中,CLR会把相应的Assembly加载的该Application Domain中。每个Application Domain都有一个属于自己的加载器堆(Loader Heap),用于维护从Application Domain创建以原创 2007-03-05 23:31:00 · 3230 阅读 · 0 评论 -
[原创]我所理解的Remoting(2):远程对象生命周期的管理—Part I
1.CLR的垃圾回收机制在.NET中提到对象的生命周期,我们会不由自主地想到CLR的垃圾回收。在运行一个.NET程序过程中,我们通过某种方式,比如通过new操作符,通过反序列化,通过反射机制,创建一个对象,CLR在为这个对象在托管堆中开辟一块内存空间。随着程序的运行,创建的对象越来越多,托管堆中的可用的内存越来越少,必须有一种机制来判断被分配在托管堆中的对象那些已经不被使用,以及进行原创 2007-03-22 15:29:00 · 757 阅读 · 0 评论 -
[原创]如何改善Managed Code的Performance和Scalability系列之一:由for V.S. for each想到的
一直想写一系列如何提高Performance和Scalability的文章,把我的相关经验和所知道的相关的技巧同大家分享。前一阵在园子里有一篇讨论for each 和 for两种循环那个具有更好的performance的blog,议论得沸沸扬扬。我觉得这是一个很好的切入点,我就已此作为引子,开始我的这个系列的文章。这篇文章的重点不是在于比较这两种循环孰优孰劣,我将讨论的重点是原创 2007-05-02 19:26:00 · 531 阅读 · 0 评论 -
[原创]如何改善Managed Code的Performance和Scalability系列之二:深入理解string和如何高效地使用string
无论你所使用的是哪种编程语言,我们都不得不承认这样一个共识:string是我们使用最为频繁的一种对象。但是string的常用性并不意味着它的简单性,而且我认为,正是由于string的频繁使用才会促使其设计人员在string的设计上花大量的功夫。所以正是这种你天天见面的string,蕴含了很多精妙的设计思想。一个月以前我写了一篇讨论字符串的驻留(string interning)的文章原创 2007-05-06 15:26:00 · 561 阅读 · 0 评论 -
[原创]再说String
在前两个月的时间内,我在园子里发表的两片介绍字符串的恒定性和字符串驻留的文章:《字符串的驻留(String Interning)》和《深入理解string和如何高效地使用string》。前几天Anytao在他的《品味类型---值类型与引用类型(中)-规则无边》的文章中,针对字符串的恒定性展开了很好的讨论,昨天首页上又出现了亚历山大同志的讨论性质的帖子《关于String的终极解释》。大家已原创 2007-05-31 00:25:00 · 384 阅读 · 0 评论 -
[原创]What is "Type" in managed heap?
我们知道,在程序运行过程中,每个对象(object)都是对应了一块内存,这里的对象不仅仅指的是某个具体类型的实例(instance),也包括类型(type)本身。我想大家也很清楚CLR如何为我们创建一个类型的实例(instance)的:CLR计算即将被创建的Instance的size(所有的字段加上额外的成员所占的空间:TypeHandle和SyncBlockIndex);在当前AppD原创 2007-06-04 03:25:00 · 472 阅读 · 0 评论 -
[原创]深入理解C# 3.x的新特性(3):从Delegate、Anonymous Method到Lambda Expression
较之前一个版本,对于C# 3.x和VB 9来说,LINQ是最具吸引力的。基本上很多的新的特性都是围绕着LINQ的实现来设计的。借助Extension Method,我们可以为LINQ定义一系列的Operator。通过Lambda Expression我们可以为LINQ编写更加简洁的查询。我们可以说这些新的特性成就了LINQ,也可以说这些新特性就是为了实现LINQ而产生,但是我们应该明白,原创 2007-08-22 13:21:00 · 747 阅读 · 0 评论 -
[原创]深入理解C#3.x的新特性(4):Automatically Implemented Property
深入理解C#3.x的新特性系列在沉寂一个月之后,今天继续。在本系列前3部分中,我们分别讨论了Anonymous Type,Extension Method 和Lambda Expression,今天我们来讨论另一个实用的、有意思的New feature:Automatically Implemented Property。一、繁琐的private field + public pro原创 2007-09-15 21:19:00 · 564 阅读 · 0 评论 -
[原创-总结]深入理解C# 3.x的新特性系列总结
“合抱之木,生于毫末;九层之台,起于垒土”,如果把.NET比作一栋摩天大楼的话,CLR就是这座大楼的基石。CLR功能强大而复杂,它不仅为我们的.NET Program提供一个托管的执行环境,还为我们引入了一系列全新的概念:JIT,GC,MSIL,AppDomian,Assembly等等。深入了解CLR有利于我们开发高质量的.NET Application。为此,Anytao邀请我一起创建原创 2007-10-07 12:19:00 · 477 阅读 · 0 评论 -
[原创]一个通过BackgroundWorker实现WinForm异步操作的例子
在最近的一个Smart Client项目中,为了演示异步操作的实现,写了一个基于BackgorundWorker的例子。由于这个理基本上实现了BackgorundWorker的大部分功能:异步操作的启动、操作结束后的回调、异步操作的撤销和进度报告等等。尽管没有太多的技术含量,姑且放上来与大家分享。 1、场景描述 下面是程序运行时的截图。本程序模拟这样的一个场景:有两组相互独立的数据需要逐原创 2008-07-30 09:16:00 · 693 阅读 · 0 评论 -
[原创][MethodImpl(MethodImplOptions.Synchronized)]、lock(this)与lock(typeof(...))
对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在众多的线程同步的可选方式中,加锁无疑是最为常用的。如果仅仅是基于方法级别的线程同步,使用System.Runtime.CompilerServices.MethodImplAttribute无疑是最为简洁的一种方式。MethodImplAttribute可以用于instance method,原创 2008-10-17 09:13:00 · 1436 阅读 · 0 评论 -
[原创].Net Framework: 字符串的驻留(String Interning)
关于字符串的驻留的机制,对于那些了解它的人肯定会认为很简单,但是我相信会有很大一部分人对它存在迷惑。在开始关于字符串的驻留之前,先给出一个有趣的Sample:Code Snip:static void Main(string[] args) { string str1 = "ABCD1234"; str原创 2007-03-04 23:31:00 · 3413 阅读 · 0 评论