c# - 默认事件添加/删除实现

标签 c# .net events .net-4.0 .net-4.5

我希望在向事件添加或删除事件处理程序时实现一些额外的逻辑。

我知道 .net 中的默认实现最近发生了变化。

我希望我的实现尽可能接近默认实现。

任何人都可以向我指出/提供一些东西来展示编译器如何实现事件吗?

最佳答案

参见this series of blog posts .

在 C# <4 中,它在 lock 中使用简单的委托(delegate)操作。

在 C# 4+ 中,它通过在循环中调用 Interlocked.CompareExchange 来使用更奇特的无锁算法;在反编译器中查看它以获取更多详细信息。

如果您确定您的类将永远在多个线程上使用,那么您不需要任何这些;您可以简单地使用不同步的委托(delegate)算法。

关于c# - 默认事件添加/删除实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484962/

相关文章:

asp.net - 如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?

javascript - 在EventEmitter上,我如何知道我可以监听的所有事件?

c# - 使用soap客户端时出现InvalidOperationException

c# - 突出显示所选文本并保存

c# - 如何将字符串添加到资源?

c# - 为什么Task Parallel Library在某些情况下调度任务会出现 'hidden' 1秒超时?

.net - WPF标签中的自动换行符

c# - Azure 存储表 : await table. ExecuteAsync(InsertOperation) 执行,但从未完成

c# - 事件发生在读取和清除操作之间,因此,最后的数据将丢失

excel - 有没有办法在打开具有相似文件名的 Excel 文件时自动运行宏?