上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
摘要: 适配器设计模式是把一个类的接口转化成客户端期望的接口,从而使原本接口不匹配的两个类能一起工作。实际中这种场景很容易碰到,比如A类型手机充电器需要10V电压充电,B类型手机需要15V电压充电。A类型手机的充电器价格非常昂贵,而B类型的充电器价格低廉。市场就有可能出现把B型充电器转换成A型手机匹配的适配器。适配器设计模式有两种:类适配器:使用继承实现接口转换。实例适配器:使用组合实现接口转换。类适配器类图:类适配器设计的角色:源:被适配的类。目标:客户期望的接口.由于适配器需要继承源。所以目标必须是接口。适配器:把源接口转换成目标接口。适配器需要继承源。代码:using System;using 阅读全文
posted @ 2011-02-10 16:56 b0b0 阅读(315) 评论(6) 推荐(2)
摘要: WCF 异步调用说明: WCF客户端异步调用与服务端代码没有关系,只是和客户端的代码有关系。服务端服务接口:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.ServiceModel;namespaceConsoleAsyService{///<su 阅读全文
posted @ 2011-02-10 10:52 b0b0 阅读(551) 评论(0) 推荐(1)
摘要: WCF 承载服务 WinForm 承载 WCF 服务端 服务代码 服务接口: namespace WCFService { [ServiceContract] public interface IServiceWindow { [OperationContract(IsOneWay=false)] string GetCurrentTime(); } } 服务实现: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serializa 阅读全文
posted @ 2011-02-10 10:49 b0b0 阅读(785) 评论(0) 推荐(1)
摘要: 定义:装饰器设计模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。不改变对象的情况下,动态增加其功能。• 需要扩展一个类的功能,或给一个类添加附加的成员。• 需要动态地给一个对象增加功能,这些功能可以再次动态的撤销• 需要增加由一些基本功能的排列组合二产生的非常大量的功能,从而使继承关系实现变得不现实。装饰器模式中的各个角色:• 抽象构件角色:给出抽象接口。规范被附加功能类型。• 具体构件角色:被附加功能的具体实现。• 装饰角色:持有被附加对象的实例,并实现抽象构件的接口规范(装饰角色实现抽象构件的目的就是为了具体装饰角色之间也可以相互修饰)。• 具体装饰角色:扩展具体构件的功 阅读全文
posted @ 2011-01-30 10:46 b0b0 阅读(421) 评论(0) 推荐(1)
摘要: 性能监视器,是Windows NT提供的一种系统功能。Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器。 性能监视器的使用 比如需要监控应用程序NetThreading中每秒中的线程的个数。 1) 清除显示 2) 冻结显示 已经得到了需要的数据,如果不冻结绘图,性能监视器会把不需要的数据绘制出来。 冻结显示也就是停止性能监视器绘图。 3) 添加计数器 在图表中单击鼠标右键,单击添加计数器 4) 选择需要监视的性能对象。比如监视某一进程中的线程数,首先选择性能对象进程Process 5) 然后选择计数器,线程个 阅读全文
posted @ 2011-01-25 11:44 b0b0 阅读(387) 评论(0) 推荐(1)
摘要: 线程池实现的原理: 多线程单元模式,借助抢先式多任务方式,利用高性能的队列和调度来实现。 线程池管理是指多线程应用程序的初始化过程中创建线程的集合,当需要线程是,为新的任务重用线程,而不是创建新的线程。线程的数量一般是固定的。线程池中的线程都分配了一个任务,当任务完成时,线程就返回线程池中等待下一次分配。 线程池的优点: • 不需要重新创建线程 • CLR不必为每个生存周期短暂的任务创建一个全新的线程,并在结束时回收其资源 • 线程池根据进程,优化时间片 • 启动多个线程,不必为每个线程设置属性 • 允许将线程的状态信息作为一个对象传递给当前执行任务的过程参数 WaitCall 阅读全文
posted @ 2011-01-25 11:13 b0b0 阅读(2017) 评论(1) 推荐(2)
摘要: 获取目录 获取当前目录可以使用AppDomain.CurrentDomain.BaseDirectory。 获取当前目录的上级目录Path.GetFullPath("..\\") 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace PathTest { class Program { static void Main(string[] args) { //使用AppDomain获取当前应 阅读全文
posted @ 2011-01-20 17:36 b0b0 阅读(963) 评论(0) 推荐(1)
摘要: 类的静态字段在类的实例中是共享的。多个线程修改实例字段的值在对其它线程来说是可见的,这也是clr默认的行为。对静态字段添加ThreadStaticAttribute标记可以改变这种默认的行为。ThreadStaticAttribute指示静态字段的值对于每个线程都是唯一的。用 ThreadStaticAttribute 标记的 static 字段不在线程之间共享。每个执行线程都有单独的字段实例,并且独立地设置及获取该字段的值。如果在不同的线程中访问该字段,则该字段将包含不同的值。示例代码代码Code highlighting produced by Actipro CodeHighlighte 阅读全文
posted @ 2011-01-14 14:51 b0b0 阅读(5511) 评论(3) 推荐(1)
摘要: 定义 ManualResetEvent:通知正在等待的线程已发生事件。 AutoResetEvent:通知正在等待的线程已发生事件。 代码 ManualResetEvent测试 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace NetThreading.UserThread { /// summary /// ManualAutoResetEvent的用法 /// /sum 阅读全文
posted @ 2011-01-13 12:50 b0b0 阅读(674) 评论(0) 推荐(1)
摘要: Monitor说明 Enter, TryEnter 获取对象锁。此操作同样会标记临界区的开头。其他任何线程都不能进入临界区,除非它使用其他锁定对象执行临界区中的指令。 Wait 释放对象上的锁以便允许其他线程锁定和访问该对象。在其他线程访问对象时,调用线程将等待。脉冲信号用于通知等待线程有关对象状态的更改。 Pulse (信号), PulseAll 向一个或多个等待线程发送信号。该信号通知等待线程锁定对象的状态已更改,并且锁的所有者准备释放该锁。等待线程被放置在对象的就绪队列中以便它可以最后接收对象锁。一旦线程拥有了锁,它就可以检查对象的新状态以查看是否达到所需状态。 Exit 阅读全文
posted @ 2011-01-13 12:48 b0b0 阅读(1590) 评论(1) 推荐(1)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页