我在.NET 4中有一個基於集合的項目。我的意思是說,我有一個主集合,稱之爲「系統」,它由框架組成,它們是每個由卡組成,這些卡又由通道組成。所以,它看起來像System-> Frame-> Card-> Channel。所有這些都表示爲對象,並且它們之間存在父子關係。本質上,Channel只暴露於Card,Card只暴露給Frame,而Frame只暴露給System。在基於集合的項目中傳播事件
理想情況下,我希望只將方法從System類暴露給外部世界。但是,通道,卡片和框架類中會出現關鍵事件。目前,我處理它們的方式是通過傳播。假設Channel中發生了一個事件。此事件首先在Card中提出,然後在Frame中提出,最後在System中提出。你可以看到這是如何產生大量代碼的。但我主要關心的不是代碼,而是性能。
您是否認爲這種傳播會嚴重影響我的表現?有沒有辦法讓它更有效率?我還有什麼其他選擇?我的收藏相對較小。系統是1,框架< 16,卡片< 256,通道< 8192.大多數數據存儲在Channel類中,其中只有原始對象。
EDITS
這裏是我在錄卡,由通道引發的事件代碼:
protected virtual void OnChannelPropertyChanged(Object sender, PFPropertyChangedEventArgs e)
{
try
{
EventHandler<PFPropertyChangedEventArgs> handler = ChannelPropertyChanged;
TestEventArgs_ChannelPropertyChanged = e;
if (handler != null)
{
handler(sender, e);
}
}
catch (Exception ex)
{
Milltown.MTCore.mtException mtEx = new Milltown.MTCore.mtException((int)PFExceptions.Exception_Hidden_FuctionLevel, ex,
PFCommonVariables.ApplicationPlatform, PFCommonVariables.ApplicationDataSource, "PFCard:OnChannelPropertyChanged");
}
}
當我一個頻道添加到卡的卡類中,我打電話給:
channel.ChannelPropertyChanged += this.OnChannelPropertyChanged;
+1表示「優化前測量」。 – 2010-07-20 15:40:30