日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

asp.NET自定義服務(wù)器控件內(nèi)部細節(jié)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:ASP.NET 2.0實現(xiàn)防止同一用戶同時登陸
要防止同一用戶同時登陸,首頁應(yīng)該記錄在線用戶的信息(這里與用戶名為例),然后判斷正在登陸的用戶里面是否已存在。在這里使用一個cache存放已經(jīng)登陸的用戶名,但是還有一個問題就是要知道用戶是

如大家要轉(zhuǎn)載,請保留本人的版權(quán):
/*
*Description:asp.NET自定義服務(wù)器控件內(nèi)部細節(jié)系列教程
*Auther:崇崇-天真的好藍
*MSN:[email protected]
*Dates:2007-05-20
*Copyright:ChongChong2008 YiChang HuBei China
*/

關(guān)于自定義asp.NET自定義服務(wù)器控件文章和源碼示例網(wǎng)上已經(jīng)很多了,不過有些內(nèi)部些節(jié)方面,讓一些初次接觸這方面技術(shù)的朋友難以理解,對服務(wù)器控件的方方面面也很疑惑。為此,我抽出些時間把自己所理解的東西整理出來,方便大家交流學習。

一 理解事件委托,事件,引發(fā)事件以及事件優(yōu)化

.NET框架的事件委托和事件數(shù)據(jù)的命名約定:
  事件數(shù)據(jù)類由事件名加后綴EventArgs構(gòu)成,如:SXLoginEventArgs
  事件委托由事件名加后綴EventHandler構(gòu)成,如:SXLoginEventHandler
  引發(fā)事件的方法名字是在事件前加上前綴On,OnSXLogin

1。事件委托

委托其實是一個類,委托具有函數(shù)指針的粒度和接口的安全性,為什么這樣說,是因為委托就是安全類型的函數(shù)指針,用來回調(diào)方法,方法的簽名必須和委托的簽名相匹配。

下面我們看看委托的聲名:
public delegate void SXLoginEventHandler(object sender,SXLoginEventArgs e);

上面的定義表示定義了一個SXLoginEventHandler的事件委托,返回類型是void,并分別接受一個object和SXLoginEventArgs類型的參數(shù)。object表示事件的發(fā)送者,e表示描述事件的數(shù)據(jù)。

可以看出事件委托的聲名和類的聲名是類似的,只需增加關(guān)鍵字delegate即可。

委托間接派生于System.Delegate,直接派生于System.MulticastDelegate。

2。事件

事件是當有動作發(fā)生或狀態(tài)改變時,類發(fā)出的信息或通知。

下面我們看看事件的聲名:
public event SXLoginEventHandler SXLogin ;可以看出事件是與一個委托相關(guān)聯(lián)的。


3。引發(fā)事件

為了在類中實現(xiàn)事件,需要一個事件數(shù)據(jù)類,事件委托以及一個發(fā)布事件通知的方法。我們需要把這些組合在一起,下面給一個例子:

3.1 如果類沒有任何關(guān)聯(lián)的事件數(shù)據(jù),就直接使用EventArgs類,或其它已存在的事件數(shù)據(jù)類,必須匹配。否則,需要定義一個事件數(shù)據(jù)類,這個類必須從System.EventArgs中派生,如下:
public class SXLoginEventArgs:EventArgs{...}

3.2 如果事件沒有關(guān)聯(lián)的數(shù)據(jù),就直接使用System.EventHandler作為事件委托,否則,需要定一個事件委托,如下:
public delegate void SXLoginEventHandler(object sender , SXLoginEventArgs e );

3.3 用event關(guān)鍵字定義事件成員,后面緊跟與此對應(yīng)的事件委托,如下:
public event SXLoginEventHandler SXLogin ;

3.4 在類中定義一個虛方法調(diào)用事件委托,方法的名字是在事件前加上前綴On,如下:
protected virtual void OnSXLogin(SXLoginEventArgs e)
{
if(SXLogin != null)
{
SXLogin(this , e);
}
}

4。事件優(yōu)化

如果一個類中引發(fā)了多個事件,通過為每一個事件聲名一個事件字段成員來執(zhí)行時低效的,為此我們換一種方法用屬性來定義事件。

.NET框架有一個System.ComponentModel.EventHanlderList類,這個類是一個優(yōu)化了的委托存儲和取回的鏈表。下面來看看優(yōu)化事件模式是如何實現(xiàn)的:

private EventHanlderList events ;
protected EventHanlderList Events
{
get
{
if(events==null)
{
events = new EventHanlderList();
}
return events;
}
}

protected static readonly object SXLoginEventObject = new object();

我們用屬性而不是字段來定義事件,如下:
public event SXLoginEventHandler SXLogin
{
add{Events.AddHandler(SXLoginEventObject,value)};
remove{Events.RemoveHandler(SXLoginEventObject,value)};
}

分享:.Net下的MSMQ的同步異步調(diào)用
一、MSMQ簡介 MSMQ(微軟消息隊列)是Windows操作系統(tǒng)中消息應(yīng)用程序的基礎(chǔ),是用于創(chuàng)建分布式、松散連接的消息通訊應(yīng)用程序的開發(fā)工具。消息隊列 和電子郵件有著很多相似處,他們都包含多

來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
相關(guān).Net教程