上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: CC.NET 是 CruiseControl.NET 的简称,官方网站在这里。 官方的定义是自动连续集成服务, 使用Microsoft .NET Framework实现. 另外它还有Java的版本叫做CruiseControl。1)CC.NET 单独是不起什么作用的,在部署CC.NET 之前,还需要安装版本控制服务,它支持下列表所示的代码控制,下面我们以Subversion为例来说明, 在另一部机器装上VisualSVN Service,机器名为greg-pc1, 本机安装TortoiseSVN客户端。2)首先,确保你的电脑上已经安装了IIS(因为CC.NET会在IIS里面建立一个虚拟目录作为 阅读全文
posted @ 2013-08-30 11:57 grkin 阅读(987) 评论(0) 推荐(0) 编辑
摘要: 继承法是支持框架扩展点的简单方法。但是,开发者要实现抽象方法,必须要知道父类中有哪些可用的数据和方法,以及他们的相互关系,因此开发者需要详细了解框架内部结构才能使用它。(我操,绝对不是好设计!)例如,在NewYorkBusiness类中,实现CalculateStateTax 和CalculateFedTax 这两个方法,看上去很简单,但却要求开发者必须知道,有个名为income的 保护型浮点变量,且必须在调用任何一个CalculateXxxTax方法之前为该变量赋值。 而且,父类向自雷暴露其内部细节,降低了父类的封装度, 这可能会导致开发者随意对类的内部状态做出超越其父类设计者意图的访问和修 阅读全文
posted @ 2013-07-25 18:54 grkin 阅读(1045) 评论(0) 推荐(0) 编辑
摘要: 创建扩展点的方法有(1)继承法, (2)组合法先看继承法: 分别是钩子方法, 和模板方法钩子方法是一个占位符,可以是一个抽象类中的抽象方法,或者是一个类,一个应用程序。举例说明钩子方法,也就是抽象方法是如何工作的 public abstract class BasicBusiness { protected float income; //the template method public void ReportTax() { float sTax = CalculateStateTax(); float fTax = CalculateFedTax(); bool ok = CheckBa 阅读全文
posted @ 2013-07-25 16:20 grkin 阅读(1149) 评论(0) 推荐(0) 编辑
摘要: 最近越来越发现NLog的好,我是用程序的方法来配置, 而不是用XML配置文件。以下是代码,虽然麻烦了点,但是得到了我想要的功能。 1: using System; 2: using System.IO; 3: using System.Text; 4: using NLog; 5: using NLog.Config; 6: using NLog.Layouts; 7: using NLog.Targets; 8: 9: namespace ConsoleApplication1 10: { 11: public clas... 阅读全文
posted @ 2013-06-13 01:48 grkin 阅读(2841) 评论(0) 推荐(2) 编辑
摘要: 编程初段通常比较喜欢使用静态变量,和静态方法,因为很方便,不用仔细构建框架。但是对封装性破坏很大,internal static 或public static 声明的东西几乎程序里什么地方都可以使用,但是我觉得很容易出问题。 前几天碰到一个问题, 程序启动的时候需要检查一下配置目录,当不存在此目录,就去创建一个。程序如下: public class ClassDebug { public static string 静态属性 { get { string tempPath = ... 阅读全文
posted @ 2013-05-18 06:43 grkin 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 这段代码有点绕,很搞。class Program { public static Task Delay(int millisecondsTimeout) { TaskCompletionSource tcs = null; Timer timer = null; timer = new Timer(delegate { timer.Dispose(); //这里插入操作 tcs.Try... 阅读全文
posted @ 2013-04-11 12:39 grkin 阅读(269) 评论(0) 推荐(0) 编辑
摘要: c#4.5中出现了async 和 await关键字,对于简化异步的写法有很大帮助,说是编译器帮你做了很多自动修改代码的工作,比Java7异步框架好了不知道多少,吹牛吧, 这类语法糖带来的后果是写代码的人根本就不知道后面的原理,也很难入门,要看大量的资料。 首先看TAP,基于任务的异步模式,之前最好先了解APM,异步模型, 和EAP, 基于事件的异步模式,饶了一圈才知道这个东西怎么用。 但是博客园里的文章少之又少,也没有解释清楚。今天看了TIM的一篇文章,觉得能解释清楚吧, 所以转到这里。若果要举一个简单的例子,就用一个Windows Forms 应用加一个长时间运行的任务来做演示,目的是不想长 阅读全文
posted @ 2013-04-11 12:30 grkin 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 试着画了一个状态图,不一定对一个线程至少总是处于 ThreadState 枚举中的一个可能状态,并且可以同时处于多个状态。进入托管环境的非托管线程已处于已启动状态。 线程在启动状态后,许多操作都可使线程更改状态。 下表列出使状态发生更改的操作以及相应的新状态。操作由于 Running 状态的值为 0,因此无法执行位测试来发现此状态。 但可以使用以下测试(以伪代码表示)。if ((state & (Unstarted | Stopped)) == 0) // implies Running在任何给定时间,线程通常处于多个状态中,例如,如果某个线程在 Monitor.Wait 调用被阻止, 阅读全文
posted @ 2013-04-09 11:16 grkin 阅读(1162) 评论(0) 推荐(0) 编辑
摘要: --by Jean-Paul Boodhoo首先声明,这种模式可能已经过时,这里只是作为补充知识,回顾一下。这里下载代码快速导航Following the MVP第一次试运行填充下拉菜单实现View接口下一步是什么?UI创建技术,例如 ASP.NET 和Window Forms变得进一步强大, UI经常干了它不该干的活。责任区分不清, 经常把其他层的逻辑都拿了过来。MVP模式很好的解决了这个问题。这我用MVP模式建立了一个显示窗口,使用的是Northwind数据库。UI层充斥一堆逻辑的坏处? 相同的代码重复出现在几个常用的视图里。 测试困难,维护丑陋的UI运行脚本困难。重构的时候,MVP模式可 阅读全文
posted @ 2013-03-28 06:17 grkin 阅读(1115) 评论(0) 推荐(0) 编辑
摘要: 可以在form_load事件里把this传给UserControl,然后在usercontrol里调用form的各种方法,不过这种做法不太好,耦合性较高。标准做法是用事件传递//UserControl里加如下代码:public delegate void FormCloseEventHandler(object sender, EventArgs e);public event FormCloseEventHandler FormClose;private void button_quit_Click(object sender, EventArgs e){ if (th... 阅读全文
posted @ 2013-03-26 08:24 grkin 阅读(1119) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页