摘要: .Net编程中最经常用的元素,事件必然是其中之一。无论在ASP.NET还是WINFrom开发中,窗体加载(Load),绘制(Paint),初始化(Init)等等。“protected void Page_Load(object sender, EventArgs e)”这段代码相信没有人不熟悉的。细心一点一定会发现,非常多的事件方法都是带了“object sender, EventArgs e”这两个参数。这是不是和委托非常相似呢?一、委托(有些书中也称为委派)委托是什么呢?这个名字的意思已经赋予了我们想象的空间,你是编程的,你现在正在写一个ASP.NET网页,而JS是你不熟悉的,于是你委托你 阅读全文
posted @ 2012-03-12 09:26 Tammie-锴 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 一、WPF样式类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种,例如为Button定义统一的背景颜色和字体: 1: <Window.Resources> 2: <Style 3: TargetType="Button"> 4: <Setter Property="Background" Value="Yellow" /> 5: <Setter Property="Margin" Value="5" /& 阅读全文
posted @ 2012-02-07 17:37 Tammie-锴 阅读(512) 评论(0) 推荐(0) 编辑
摘要: using System;using System.Runtime.InteropServices;using System.Reflection;using System.Reflection.Emit;public class DllCaller : IDisposable{ [DllImport("Kernel32.dll")] static extern IntPtr LoadLibrary(string lpFileName); [DllImport("Kernel32.dll")] static extern IntPtr GetProcAd 阅读全文
posted @ 2012-02-06 12:34 Tammie-锴 阅读(1378) 评论(0) 推荐(0) 编辑
摘要: 在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示元,必要进,还要控制后台线程中断当前操作。以前,类似的应用会比较麻烦,需要写的代码较多,也很容易出现异常。在 .net中,提供了一个组件 backgroundworker就是专门解决这个问题的。使用这个组件其实非常简单,例如,我们做一个类似如下界面的进度条的小例子,在后台线程中进行耗时运算,同时刷新界面上的滚动条和提示信息,运行结束后,弹出处理结果。在界面上拖入backgroundWorker组件 阅读全文
posted @ 2011-12-11 16:37 Tammie-锴 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 一、BackgroundWorker组件经验之谈在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便,然而在开始时由于没有搞清楚它的使用机制,走了不少的弯路,现在把我在使用它的过程中的经验与诸位分享一下。BackgroundWorker类中主要用到的有这列属性、方法和事件: 重要属性: 1、CancellationPending获取一个值,指示应用程序是否已请求取消后台操作。通过在DoWork事件中判断CancellationPending属性可以认定是否需要取消后台操作(也就是结束线程); 2、IsBusy获取一个值,指示 BackgroundW 阅读全文
posted @ 2011-12-11 12:34 Tammie-锴 阅读(877) 评论(1) 推荐(1) 编辑
摘要: 最近一直在看 程序集 的 相关知识,今天看到了一位朋友的blog 描述的不错在这里转载下在以前传统的开发中我们都知道,一个应用程序对应一个进程,并为该进程指定虚拟内存,由操作系统来映射实际的物理内存,有效的维护了进程之间的安全性。但另一方面,每一个进程都会消耗一定的系统资源,降低了性能,并且进程间的通信也比较麻烦。在.Net中推出了一个新的概念:应用程序域(AppDomain)。可以理解成很多应用程序域都可以运行在同一个.NET的进程中,可以降低系统消耗,同时不同的域之间互相隔离,在安全性方面有保障。另外对于同一个进程内不同域之间的通信也相对简单一点。应用程序域涉及的内容很多,本文就简要描述以 阅读全文
posted @ 2011-10-08 10:58 Tammie-锴 阅读(479) 评论(0) 推荐(1) 编辑
摘要: 之前在编写程序的过程中,遇到了这个概念。在.NET 4之前,泛型接口是不变的。.NET 4通过协变和抗变为泛型接口和泛型委托添加了一个重要的扩展。协变和抗变指对参数和返回值的类型进行转换。例如,可以给一个需要Shape参数的方法传送Rectangle参数码?下面用示例说明这些扩展的优点。在.NET中,参数类型是协变的。假定有Shape和Rectangle类,Rectangle派生自Shape基类。声明Display()方法是为了接受Shape类型的对象作为其参数:public void Display(Shape o) { } //形参是基类,实参是派生类 这是协变 ,就是说本来预想... 阅读全文
posted @ 2011-09-28 08:56 Tammie-锴 阅读(1908) 评论(1) 推荐(0) 编辑
摘要: 前段时间接触到的一个概念 ----迭代器认识它还是通过IL的代码,然后上网了解了一下。迭代器概述迭代器是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或get访问器的代码体。迭代器代码使用yield return语句依次返回每个元素。yield break将终止迭代。有关更多信息,请参见yield。可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在foreach语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}迭代器的返回类型必须为IEnumerable、IEnumerator 阅读全文
posted @ 2011-09-26 12:07 Tammie-锴 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 在网上找了下插件式编程的资料,这里自己先借鉴下别人的,同时发现有自己的看法,不过由于本人水平有限,不一定有参考价值,写出来一方面是为了总结自己,以求提高,另一方面也希望各为朋友看到我的不足,给我提出宝贵意见。什么是插件式编程提起插件式,我们首先想到的是firefox,用过firefox的人都知道它是一个插件式程序。当一个功能需要,完全可以从网上下载一个插件后,重启后,就能使用。这个功能给我们带来许多的方便之处,这就是插件式程序的好处。插件的本质在于不修改程序主体(平台)的情况下对软件功能进行拓展与加强,当插件的接口公开后,任何公司或个人都可以制作自己的插件来解决一些操作上的不便或增加新功能,也 阅读全文
posted @ 2011-09-13 15:20 Tammie-锴 阅读(1150) 评论(0) 推荐(0) 编辑
摘要: 之前一直想学学插件编程, 主要的原因是感到现在的客户需求变化不定,如果把全部功能整合在一个执行文件中的话,修改,升级起来很不方便, 所以想采用插件编程的方式, 只需要构建好了程序框架之后, 每完成一个功能,就可以让用户审核一个, 化整为零,让开发团队和客户都能构掌握项目开发的进度. 同时大家通过这种方式,增强对项目按时完成的信心.以下资料主要是从haha blog中获得的, 从网上找了很多类似的资料,只有这个我觉得是比较适合初学者//1 定义插件接口,将其编译成 dll,例如:using System;namespace PluginInterface{ public interface IS 阅读全文
posted @ 2011-09-13 14:32 Tammie-锴 阅读(564) 评论(0) 推荐(0) 编辑