c#事件处理程序行为

本文关键字:程序 事件处理 | 更新日期: 2023-09-27 18:07:13

我有这样的代码

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_datachchanged]被分配给同一个类[m_dasubscription_generic_datachchanged]的多个实例。我的问题是,如果在同一时间多个实例调用此处理程序将如何在这里处理。将会有任何情况下,它将覆盖数据。或者事件处理程序将为每个实例分开。

c#事件处理程序行为

事件处理程序分别执行。听起来您担心参数会被对处理程序的另一次调用覆盖。这不会发生(我甚至不认为这是可能的)。因为看起来您没有访问事件处理程序中的任何共享对象,所以您应该是完全安全的。