2013-04-03 112 views
0

我有此代碼C#事件處理行爲

List<DaSubscription> lstSubscription=new List<DaSubscription>(); 

for(int i=0;i<20;i++)//20 is just to simulate the behavior 
{ 

    DaSubscription Generic=new DaSubscription(); 
    Generic.DataChanged += new DataChangedEventHandler(Generic_DataChanged); 
    lstSubscription.add(Generic); 
} 

//EVENT Handler which is raised from a 3rd party library [COM]     

void Generic_DataChanged(DaSubscription aDaSubscription, DaItem[] items, ValueQT[] values, int[] results) 
{ 
    UpdateDataChangedDTO(items, values); 
} 

作爲相同的事件處理程序[m_daSubscription_Generic_DataChanged]被分配給相同的類[m_daSubscription]的多個實例。我的問題是,如果在同一時間多個實例調用這個處理程序將如何在這裏處理。會不會有任何實例會覆蓋數據。或者事件處理程序將爲每個實例分開。

+12

請*請*開始遵循正常的.NET命名約定。使用'm_daSubscription'對變量IMO來說已經夠糟了,但是作爲* type *名稱呢? – 2013-04-03 19:40:07

+0

坦白地說,你需要更多的代碼才能向我們展示你想要做什麼。 'UpdateDataChangedDTO' **在這裏做什麼**?你爲什麼' - ='和'+ ='同一個事件?什麼是'20'的魔術數字?另外:命名慣例有助於混淆事物 - 請重命名它們以使事情更加清晰,所以我們可以理解,而不必爲名稱而拼命。 – 2013-04-03 19:47:19

回答

0

事件處理程序單獨執行。這聽起來像是你擔心參數被處理程序的另一個調用覆蓋。這不會發生(我不認爲這是可能的)。由於它看起來並不像你正在訪問事件處理程序中的任何共享對象,所以你應該完全安全。