|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。我们先来懂得一下Events属性与处置管道两个观点:
1、Events属性
我们都晓得,事务实在就是一个受限定的托付成员,那末我们在创立事务的时分,就会占用必定的存储空间。但我们在做富控件的自界说控件时,常常会表露出大批的事务给挪用者。如许,就意味着即便这些事务挪用者没有效到,也必要更多的存储空间来创立这些事务。
针对这个成绩,.net供应了处置多个事务的基本:Events属性。该属性是一个线性字典,位于System.ComponentModel.Component类下,范例是System.ComponentModel.EventHandlerList。必要一个事务,我们就经由过程一个key将事务保留到Event中,不必要的时分,经由过程Event的RemoveHandler办法将该事务移出属性中。今后必要挪用某事务时,就能够经由过程key来会见Events汇合中的事务。如许就能够节俭大批事务对空间的占用。
2、处置管道
处置管道,就是在处置一个庞大的成绩时分,将历程分红多个步骤,一步一步来实行。这有点相似于临盆产线上的流水功课。在.net中,这类处置体例就称为处置管道。如许做的优点是:
1,不会使一个办法太痴肥,处置更简便易懂。
2,在每一个步骤中,我们都能够表露事务给程序员,如许可让程序员在每一个步骤增加本人的处置逻辑,如许才够天真。
上面,我们经由过程一个示例来了解以上两个观点:
先声明类,并表露多个事务,
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Web;
namespaceWebApplication1
{
publicclassClass1:System.ComponentModel.Component
{
//先声名各事务的key
privatestaticreadonlyobjectobj_start=newobject();
privatestaticreadonlyobjectobj_processing=newobject();
privatestaticreadonlyobjectobj_end=newobject();
//经由过程Events属性声名事务
publiceventEventHandlereventStart
{
add{this.Events.AddHandler(obj_start,value);}
remove{this.Events.RemoveHandler(obj_start,value);}
}
publiceventEventHandlereventProcessing
{
add{this.Events.AddHandler(obj_processing,value);}
remove{this.Events.RemoveHandler(obj_processing,value);}
}
publiceventEventHandlereventEnd
{
add{this.Events.AddHandler(obj_end,value);}
remove{this.Events.RemoveHandler(obj_end,value);}
}
//创立各事务对应办法
protectedvoidOnEventStart(EventArgse)
{
if(this.Events[obj_start]!=null)
{
(this.Events[obj_start]asEventHandler)(this,e);
}
}
protectedvoidOnEventProcessing(EventArgse)
{
if(this.Events[obj_processing]!=null)
{
(this.Events[obj_processing]asEventHandler)(this,e);
}
}
protectedvoidOnEventEnd(EventArgse)
{
if(this.Events[obj_end]!=null)
{
(this.Events[obj_end]asEventHandler)(this,e);
}
}
//实行事务,摸拟处置管道
publicvoidProcess()
{
OnEventStart(EventArgs.Empty);
OnEventProcessing(EventArgs.Empty);
OnEventEnd(EventArgs.Empty);
}
}
}
挪用下面类:
namespaceWebApplication1
{
publicpartialclassWebForm1:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
Class1class1=newClass1();
class1.eventStart+=newEventHandler(class1_eventStart);
class1.eventProcessing+=newEventHandler(class1_eventProcessing);
class1.eventEnd+=newEventHandler(class1_eventEnd);
class1.Process();
}
voidclass1_eventStart(objectsender,EventArgse)
{
Response.Write("<br/>这是处置入手下手事务!");
}
voidclass1_eventProcessing(objectsender,EventArgse)
{
Response.Write("<br/>这是处置中事务!");
}
voidclass1_eventEnd(objectsender,EventArgse)
{
Response.Write("<br/>这是处置停止事务!");
}
}
}
输入了局:
这是处置入手下手事务!
这是处置中事务!
这是处置停止事务!无论谁倒了对双方阵营的粉丝们也是有害无益。 |
|