C# 什么';s静态事件处理程序和非静态事件处理程序之间的区别
这两者之间有很大区别吗?实际上没有区别。这意味着,当处理程序是静态的时,作用域中不会有C# 什么';s静态事件处理程序和非静态事件处理程序之间的区别,c#,.net,C#,.net,这两者之间有很大区别吗?实际上没有区别。这意味着,当处理程序是静态的时,作用域中不会有this(与所有静态方法一样)。语义上没有区别,但是使用静态事件处理程序可能(如果不小心的话)导致内存泄漏。有关更多信息,请参阅 我自己也遇到过这个问题,试图使用静态事件处理程序来保持应用程序范围的数据源最新;事件处理程序阻止处置我的BindingSource组件,导致各种奇怪的问题…+1警告,@Bradley。您是否只需要在Dispose()之前取消订阅活动?@dboarman是的,这很重要。对于没有实现ID
this
(与所有静态方法一样)。语义上没有区别,但是使用静态事件处理程序可能(如果不小心的话)导致内存泄漏。有关更多信息,请参阅
我自己也遇到过这个问题,试图使用静态事件处理程序来保持应用程序范围的数据源最新;事件处理程序阻止处置我的
BindingSource
组件,导致各种奇怪的问题…+1警告,@Bradley。您是否只需要在Dispose()
之前取消订阅活动?@dboarman是的,这很重要。对于没有实现IDisposable的任何东西,您需要非常小心。。。确保静态事件的订阅者始终实现它可能是一个好的实践。还要确保您的对象实际得到处置!(之前有人发现我)同意……使用静态事件时应注意细节。内存泄漏问题是静态事件,而不是静态事件处理程序。这不是一回事。