2012-05-07 76 views
2

我正在尋找實現一些額外的邏輯時事件處理程序添加或刪除到事件。默認事件添加/刪除實現

我知道,.NET中的默認實現最近改變。

我想繼續我的實現儘量靠近默認的實現成爲可能。

任何人都可以點我/提供的東西,顯示compliler如何實現的事件?

+0

抱歉,目前還不清楚是什麼你'要求..怎麼可以實現一些「像編譯器」這樣做? – Tigran

+0

編譯器執行魔術來實現事件。我想知道這個「魔術」是如何轉化爲可以在代碼*中實現的'add' /'remove'處理程序中實現的代碼。 – spender

+0

這不是魔術;它很複雜。 – SLaks

回答

2

請參閱this series of blog posts

在C#< 4,它在lock小號使用簡單的委託操作。

在C#4 +中,它通過在循環中調用Interlocked.CompareExchange來使用一個發燒友免鎖算法;請在反編譯器中查看它以獲取更多詳細信息。

如果你確保你的類將永遠可以在多個線程中使用,你不需要任何的是什麼;你可以簡單地使用非同步的委託算術。

+0

謝謝。順便說一下,你的博客已關閉。 – spender

+0

很多線程在這裏。我需要做對。 – spender

+0

@spender:你確定嗎? [我的博客](http://slaks.net)對我來說看起來很好。 – SLaks