爲了提高我們使用的方法的OnEventName像這樣的事件:加薪事件線程安全的 - 最佳實踐
protected virtual void OnSomethingHappened(EventArgs e)
{
EventHandler handler = SomethingHappened;
if (handler != null)
{
handler(this, e);
}
}
但正是這一個區別?
protected virtual void OnSomethingHappened(EventArgs e)
{
if (SomethingHappened!= null)
{
SomethingHappened(this, e);
}
}
顯然第一個是線程安全的,但爲什麼以及如何?
沒有必要開始一個新的線程?
感謝您的傑出答案(和博客文章)。 – 2010-09-08 15:13:55
我在我的核心庫中也有這個擴展方法,名字完全一樣,用完全相同的方法完成相同的工作!雖然我的參數名稱是eventHandler。 – tia 2010-09-08 19:19:30
-1:'雖然有硬幣的背面,如果使用臨時變量方法(...),則可能是事件在事件從事件中分離後會調用事件偵聽器:這是**總是**的可能性;這是不可避免的。 – ANeves 2014-02-20 11:57:41