static未央

博客园 首页 新随笔 联系 订阅 管理
上一页 1 2 3 4 5 6 7 ··· 12 下一页

2012年3月7日 #

摘要: 我们知道System.ComponentModel命名空间下有个名为DescriptionAttribute的类用于指定属性或事件的说明,我所调用的枚举值描述信息就是DescriptionAttribute类的Description属性值。 首先定义一个枚举 /**//// <summary> /// 测试用的枚举 /// </summary> public enum ArticleTypeList { [DescriptionAttribute("中国软件开发网络")] csdn, msdn, [DescriptionAttribute(" 阅读全文
posted @ 2012-03-07 17:05 abstract未央 阅读(399) 评论(0) 推荐(0)

2011年12月21日 #

摘要: 在上一讲介绍了使用lock来实现线程之间的同步。实际上,这个lock是C#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类。先看看下面的C#源代码:publicstaticvoidMyLock(){lock(typeof(Program)){}}复制代码 上面的代码通过lock语句使MyLock同步,这个方法被编译成IL后,代码如图1所示。 图1 从上图被标注的区域可以看到,一条lock语句被编译成了调用Monitor的Enter和Exit方法。Monitor在System.Threading命名空间中。lock的功能就相当于直接调用Monitor的Entry方. 阅读全文
posted @ 2011-12-21 00:35 abstract未央 阅读(272) 评论(0) 推荐(0)

摘要: 虽然线程可以在一定程度上提高程序运行的效率,但也会产生一些副作用。让我们先看看如下的代码:classIncrement{privateintn=0;privateintmax;publicIncrement(intmax){this.max=max;}publicintresult{get{returnn;}set{n=value;}}publicvoidInc(){for(inti=0;i<max;i++){n++;}}}classProgram{publicstaticvoidMain(){Incrementinc=newIncrement(10000);Thread[]thread 阅读全文
posted @ 2011-12-21 00:27 abstract未央 阅读(272) 评论(0) 推荐(0)

摘要: 如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程序上消耗服务器的资源。为此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户端请求时,就从这些建好的线程中获得线程对象,并处理请求。保存这些线程对象的结构就叫做线程池。 在C#中可以通过System.Threading.ThreadPool类来实现,在默认情况下,ThreadPool最大可建立500个工作线程和1000个I/O线程(根据机器CPU个数和.net framework版本的不同,这些数据可能会有变化)。下面是一个用C#从线程池获得线程的例子:privatestaticvoidex. 阅读全文
posted @ 2011-12-21 00:25 abstract未央 阅读(411) 评论(0) 推荐(0)

摘要: 一、 Thread类的基本用法通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下:[ComVisibleAttribute(true)]public delegate void ThreadStart()我们可以通过如下的方法来建立并运行一个线程。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingS 阅读全文
posted @ 2011-12-21 00:13 abstract未央 阅读(257) 评论(0) 推荐(0)

2011年12月16日 #

摘要: 异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }委托实际上是把方法名作为参数,但是若有好多个方法时,就要指明是哪个参数 查看如下代码:this.Invoke(delegate { MessageBox.Show("t4"); });熟悉winform的开发者都知道,this是一个窗体的实例,故不做另外解释。该代码的运行,就会导致异常:{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }。其实,要从错误的提示信息来看,这个匿名方法写的是一点问题都没有的。问题的关键是invoke这个函数的参数, 阅读全文
posted @ 2011-12-16 00:12 abstract未央 阅读(191) 评论(0) 推荐(0)

2011年12月15日 #

摘要: GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。 但后来的日子里Lisp却没有成气候,采用内存手动管理的语言占据了上风,以C为代表。出于同样的理由,不同的人却又不同的看法,C程序员认为内存管理太重要了,所以不能由系统来管理,并且讥笑Lisp程序慢如乌龟的运行速度。的确,在那个对每一个Byte都要精心计算的年代GC的速度和对系统资源的大量占用使很多人的无法接受.. 阅读全文
posted @ 2011-12-15 23:00 abstract未央 阅读(231) 评论(0) 推荐(0)

摘要: Linq是近年来微软推出的非常成功的一项技术。比如,当我熟悉Linq之后,再用SQL写商业逻辑时,感觉已经不再适应了。如果您还没有系统的研究过Linq,希望本文可以给您带来帮助。 本文将从以下几个方面介绍Linq在实际开发中的应用范围: 一、LinqToXML 在测试工程内加入xml文件: 用Linq操作XML文件,可以增删改查xml,示例代码如下: 二、LinqToEntity 用EF操作NorthWind 数据库: 注,生成的sql语句分别为:Inner Join : SELECT \r\n1 AS [C1], \r\n[Extent1].[CompanyName] AS [Compan. 阅读全文
posted @ 2011-12-15 22:57 abstract未央 阅读(275) 评论(0) 推荐(0)

2011年12月11日 #

摘要: usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceEventDemo{delegatevoidTemperatureChangedEventHandle(objectsender,BoiledWaterEventArgsargs);classProgram{staticvoidMain(string[]args){Heaterht=newHeater();Monitormt=newMonitor();ht.TemperatureChanged+=newTemperatur 阅读全文
posted @ 2011-12-11 00:51 abstract未央 阅读(171) 评论(0) 推荐(0)

2011年12月2日 #

摘要: 4.11 在泛型字典类中使用foreach问题您希望在实现了System. Collections.Generic.IDictionary接口的类型枚举元素,如System.Collections.Generic.Dictionary 或 System.Collections.Generic.SortedList。解决方案最简单的方法是在foreach循环中使用KeyValuePair结构体: // 创建字典对象并填充. Dictionary<int, string> myStringDict = new Dictionary<int, string>(); myStr 阅读全文
posted @ 2011-12-02 00:15 abstract未央 阅读(444) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 ··· 12 下一页