01 2014 档案

摘要:现在也接触一下动态编译吧!去年也听说过了,但是只瞄了一眼,没去实践,不久前有同事在介绍动态编译,那时我因为某些原因没法去听听。现在就看一下 整个编译过程最基本用到两个类CodeDomProvider类和CompilerParameters 类。前者就充当一个编译器,后者则是用于记录传递给编译器的一些参数。在最初学习C#的使用,鄙人没有用得上VS,只能靠CSC,那么CSC就类似于CodeDomProvider这个类,而CSC本身会有不少命令参数,CompilerParameters 类就能为CSC传递一些编译信息(生成类型,引用程序集等)。那么下面则尝试用最简单的方式看看这个动态编译。 1... 阅读全文
posted @ 2014-01-31 10:47 猴健居士 阅读(10087) 评论(0) 推荐(2) 编辑
摘要:泛型在.NET 2.0中正式的引入。在使用泛型的过程中,联系上面向对象的继承性。往往很容易想当然敲出类似以下代码List animalLst=new List;显然这样编译是不通过的。虽然Dog和Animal之间有继承性,但是List和List这两个类之间并没有继承性。如果要解决这样的问题,用上协变与抗变(逆变),它们统称为变体。是.NET 4.0引入的新特性,但是早在.NET 2.0就引入了。 变体适用于泛型接口与泛型委托,在我们声明泛型借口或泛型委托时,加上out或in关键字就能实现。out是用于协变,这就好比子类通过隐式转换成基类的情形,这么平淡的转换,与“协”的感觉类似;in是用... 阅读全文
posted @ 2014-01-30 16:45 猴健居士 阅读(3952) 评论(0) 推荐(1) 编辑
摘要:一、线程池的适用范围 在日常使用多线程开发的时候,一般都构造一个Thread示例,然后调用Start使之执行。如果一个线程它大部分时间花费在等待某个事件响应的发生然后才予以响应;或者如果在一定期间内重复性地大量创建线程。这些时候个人感觉利用线程池(ThreadPool)会比单纯创建线程(Thread)要好。这是由于线程池能在需要的时候把空闲的线程提取出来使用,在线程使用完毕的时候对线程回收达到对象复用的效果。这个就涉及到池的性质了。线程(Thread)很容易跟数据库连接、流、Socket套接字这部分非托管资源归在一起,但是个人认为Thread并不是非托管资源,有个低级点的判别办法,就是Th.. 阅读全文
posted @ 2014-01-28 22:51 猴健居士 阅读(4845) 评论(0) 推荐(4) 编辑
摘要:在当初试用多线程的时候发现多线程能减轻或消除大量繁杂操作或过长等待时间造成的停滞感(就是线程阻塞)。后来发现使用异步操作也能达到相同的效果。但是两者之间是有区别的,之前在知识库里看了一些文章,我也记录了一下(有人云亦云的感觉),顺便也摆出一些个人观点。 多线程和异步虽然都可以减轻或消除线程阻塞而造成的停滞感,但是两者的本质上是有区别的 多线程是软件级别上的机制,在微观上它是分配CPU的时间片给某个进程中的各条线程,获得时间片的线程就可以处理它的任务,也就是执行代码。在其中负责调度CPU资源的就是操作系统,所以多线程是否能实现取决于操作系统,现今绝大部分操作系统都是多线程的系统,在DOS... 阅读全文
posted @ 2014-01-12 18:55 猴健居士 阅读(1805) 评论(4) 推荐(4) 编辑
摘要:初次接触启动界面记不清是在哪一年了,估计是小学四年级第一次打开Office Word的时候吧,更记不清楚当时的启动界面是长啥样了。后来随着使用的软件越来越多,也见到各式各样的启动界面。下面就列举了两个平常本人平常最常见的窗体,其实windows系统在启动的过程中,有Window字样并且有动画效果的那个节面也算是一个启动界面。 其目的很明显,就是程序启动之后,由于加载主界面的时间过长而导致用户体验不佳,于是往往在显示主界面之前多显示一个不带windows窗体元素的窗体,来显示应用程序加载的进度或者直接是一个静态的视图,作用在于就是跟用户反映程序是有响应的并且正在运行当中,从而提高用户体验。... 阅读全文
posted @ 2014-01-08 17:31 猴健居士 阅读(1886) 评论(6) 推荐(2) 编辑

点击右上角即可分享
微信分享提示