我正在尋找實現一些額外的邏輯時事件處理程序添加或刪除到事件。默認事件添加/刪除實現
我知道,.NET中的默認實現最近改變。
我想繼續我的實現儘量靠近默認的實現成爲可能。
任何人都可以點我/提供的東西,顯示compliler如何實現的事件?
我正在尋找實現一些額外的邏輯時事件處理程序添加或刪除到事件。默認事件添加/刪除實現
我知道,.NET中的默認實現最近改變。
我想繼續我的實現儘量靠近默認的實現成爲可能。
任何人都可以點我/提供的東西,顯示compliler如何實現的事件?
在C#< 4,它在lock
小號使用簡單的委託操作。
在C#4 +中,它通過在循環中調用Interlocked.CompareExchange
來使用一個發燒友免鎖算法;請在反編譯器中查看它以獲取更多詳細信息。
如果你確保你的類將永遠可以在多個線程中使用,你不需要任何的是什麼;你可以簡單地使用非同步的委託算術。
不知道,如果它是你正在尋找什麼,但是這篇文章顯示了一些添加刪除處理程序的.NET內部的。 (還展示瞭如何獲得和處理這些處理程序)
http://www.codeproject.com/Articles/308536/How-to-copy-event-handlers-from-one-control-to-ano
如果你想添加一些邏輯在那裏,你會發現本文有趣....
抱歉,目前還不清楚是什麼你'要求..怎麼可以實現一些「像編譯器」這樣做? – Tigran
編譯器執行魔術來實現事件。我想知道這個「魔術」是如何轉化爲可以在代碼*中實現的'add' /'remove'處理程序中實現的代碼。 – spender
這不是魔術;它很複雜。 – SLaks