我有一个来自第三方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;
}
哪个更受欢迎?或者这很重要吗?
答案 0 :(得分:2)
假设ProgressEventStep
的构造函数没有做任何异常,那么创建对象的开销应该很小。
除了性能之外,由于您在第一个场景中重复使用同一个对象,因此您可能会在多线程场景中获取错误的事件数据。