直接上代码:
var temp = this.innerEvent ;
if(temp != null) temp(this , msg);
为什么事件执行的时候,需要将其赋值给一个临时变量,有临时变量去执行呢?
请求大牛们给讲解吖! 跪谢!!!
这不是必须的,也可以写
if(this.innerEvent != null) this.innerEvent(this , msg);
知道原因了,这样做是考虑到了多线程的情况,为了线程安全,如果单线程可以直接使用,多谢阁下。
public class HasEvent
{
// Declare an event of delegate type EventHandler of
// MyEventArgs.
public event EventHandler<MyEventArgs> SampleEvent;
public void DemoEvent(string val)
{
// Copy to a temporary variable to be thread-safe.
EventHandler<MyEventArgs> temp = SampleEvent;
if (temp != null)
temp(this, new MyEventArgs(val));
}
}
MSDN 连接 https://msdn.microsoft.com/zh-cn/library/db0etb8x(VS.80).aspx