上一页 1 2 3 4 5 6 ··· 21 下一页
摘要: .本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。 为什么要使用事件而不是委托变量?在 C#中的委托和事件 中,我提出了两个为什么在类型中使用事件向外部提供方法注册,而不是直接使用委托变量的原因。主要是从封装性和易用性上去考虑,但是还漏掉了一点,事件应该由事件发布者触发,而不应该由客户端(客户程序)来触发。这句话是什么意思呢?请看下面的范例:NOTE:注意这里术语的变化,当我们单独谈论事件,我们说发布者(publisher)、订阅者(subscriber)、客户端(client)。当我们讨论Observer模式,我们说主 阅读全文
posted @ 2011-04-20 09:56 pjh123 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1、服务器端服务程序启动后,建立服务器端通道;这个通道的名称是固定的。2、任何客户端(包括OCC、接收端),调用服务器端远程对象时,都先建立通道。 目前的做法是,每个调用都做,都是先建立通道、执行调用、注销通道。也就是说客户端不维持通道。那么就存在客户端同时需要建立两个通道的情况,TcpClientChannel 要求如果要注册多个信道,则每个信道都必须具有唯一的名称,即名称不能重复。 这是不是就是客户端不停的生成通道名称的原因? 现在不却确定的是,客户端为什么在应用程序的声明周期内,不维持一个通道?二、 一个通道可以建多个远程对象,但是注册时,必须指定不同的URI。如果用同一个URI注册,后 阅读全文
posted @ 2011-04-20 09:51 pjh123 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 1、UserControl控件。 添加UserControl后,按照说法应该出现在ToolBox中,如果找不到,需要设置: 工具-》选项-》Windows窗体设计器-》常规-》工具箱-》AutoToolBoxPopulate 改为TRUE。 这种方法不会针对这个UserControl生成dll。 还有一种方法是,新建一个UserControl工程,这个工程会生成一个控件的dll,在引用工程的ToolBox中,右键->Choose Items 阅读全文
posted @ 2011-04-20 09:38 pjh123 阅读(4317) 评论(1) 推荐(1) 编辑
摘要: 1、对具体用户而言,一个好的应用程序或产品,并不在于其业务逻辑是多么的复杂,而是无论多么复杂的业务逻辑或者功能,你是如何封装的让用户动动一个手指头就都完成的?!让用户能够憧憬到他能够坐在办公室里能够一边喝茶、一边完成了非常复杂和非常重要的的业务工作,让他的领导非常欣赏他的工作效率和工作成果,让用户明白他掏的钱是非常划算的!2、一个好的需求,并不是想得越多、越细、越全面就越好,再细、再全面的需求都必然会发生变化,而且极易让需求陷入死循环。我认为好的需求是应该而且必须抓住系统的主要路径,主要关键点,其它任何细节都是对主要路径的扩充,而这个主要路径就是用户想要的。 阅读全文
posted @ 2011-03-29 09:55 pjh123 阅读(156) 评论(0) 推荐(1) 编辑
摘要: 静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。静态构造函数具有以下特点:静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。 无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数。静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。理解以上内容,请调试、分析如下程序:using System;us 阅读全文
posted @ 2011-03-24 18:00 pjh123 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 假如一个线程处理任务,保持了一个任务队列;其它几个线程向该任务队列中添加任务。我们要保证这个任务队列不能过大,比如每一个时刻,只能有3个任务在队列中,使用事件(AutoResetEvent/ManualResetEvent)机制如下:namespace ManualResetEventTest{ class Program { static void Main(string[] args) { Process processObj = new Process(); ThreadStart newProcessStart = new ThreadStart(processObj.ProcessT 阅读全文
posted @ 2011-03-22 18:16 pjh123 阅读(279) 评论(0) 推荐(0) 编辑
摘要: .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll!dumpheap -stat!dumpheap -mt <内存地址>问题1、如何处理源dump文件的mscordacwks.dll文件与调试机上的版本不一致问题而无法使用extension cmd的问题问题描述:当抓取了问题机器上的managed application的dump文件之后, 而在另外一台机器上对该dump进行分析时。如果问题机器和目标机器的mscordacwks.dll版本不一致,则在.load C:\Windows\Microsoft.NET\F 阅读全文
posted @ 2011-03-22 18:02 pjh123 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: 一、使用GC.Collect()强制执行垃圾回收: 只有两种情况下需要:1、即将进入一段儿代码,但是不想被垃圾回收打断时;2、刚刚分配了大额内存,希望尽快释放时; 释放代码: System.GC.Collect(); System.GC.WaitForPendingFinalizers();二、为自定义类重写Class Object的Finalize()虚方法 public class Object{ ... protected virtual void Finalize(){}} 在从内存中删除这个对象之前,垃圾回收器会调用对象的Finalize()方法。 但实际上,在自定义类中重写Fina 阅读全文
posted @ 2011-03-02 08:06 pjh123 阅读(293) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/mickeychang 阅读全文
posted @ 2011-02-26 17:34 pjh123 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 现象描述如下:1、服务端采用TcpServerChannel,通道名称默认(注:默认情况下系统会定义为'tcp')2、客户端在程序启动时,注册一个通道,类型为TcpChannel,并且指定通道名称为'client'。然后客户端通GetObject获得远程对象,并注册服务器端事件。问题描述:1、客户端非法关闭几次后,在客户端报异常"The channel 'tcp' is already registered." 在GetObject之前、之后进行更正,发现没有"tcp"名称的通道存在。所以不清楚程序为什么会做出这样的提示。 但是跟踪当前客户端的所有通道,并没有发现名称为tcp的通道,只有一个名 阅读全文
posted @ 2011-02-18 17:40 pjh123 阅读(238) 评论(1) 推荐(1) 编辑
上一页 1 2 3 4 5 6 ··· 21 下一页