自定义事件参数 - 我应该使用类成员还是新实例?

时间:2014-03-12 01:46:15

标签: c#

我有一个来自第三方com互操作的回调,而且它经常被调用。 (数千次。)我在一个回调的方法中引发了一个事件,我很好奇,如果为事件args使用类成员或为每个事件创建事件args类的新实例会更好?我举起的活动更新了用户界面。

我想知道为每个事件创建另一个实例是否有意义,因为它将被称为很多

使用班级成员:

private ProgressEventArgs m_eventArgs;
public bool ProgressStep(ProgressType eType, string bsMessage, int lProgressPos)
{
    if (ProgressEventStep != null)
    {
        m_eventArgs.Value = lProgressPos;
        ProgressEventStep(this, m_eventArgs);                
    }
    return true;
}

或者

public bool ProgressStep(ProgressType eType, string bsMessage, int lProgressPos)
{
    if (ProgressEventStep != null)
        ProgressEventStep(this, new ProgressEventArgs(lProgressPos));                    
    return true;
}

哪个更受欢迎?或者这很重要吗?

1 个答案:

答案 0 :(得分:2)

假设ProgressEventStep的构造函数没有做任何异常,那么创建对象的开销应该很小。

除了性能之外,由于您在第一个场景中重复使用同一个对象,因此您可能会在多线程场景中获取错误的事件数据。