相关疑难解决方法(0)

什么是一些好的.NET Profilers?

您在使用.net程序时使用了哪些分析器,您会特别推荐哪些?

.net c# profiler profiling

374
推荐指数
12
解决办法
31万
查看次数

未注册的事件处理程序会导致内存泄漏

我正在维护一个内存泄漏的Web应用程序.

基于我使用Red Gate ANTS内存分析器的调查,我很确定内存泄漏是由业务层中的事件处理程序引起的.

有一个集合在每个添加的项目上注册一个事件处理程序,以便集合可以在项目的日期更改时重新排序.看来这个事件处理程序是罪魁祸首.

此应用程序的业务层非常复杂,因此将集合及其项目保留在内存中会拖拽其他一些对象.

我在集合上实现了IDisposable,并在Dispose方法中删除了事件处理程序:

p.OnPunchDateChanged -= this.OnPunchDateChanged;
Run Code Online (Sandbox Code Playgroud)

但是,实现IDisposable并没有帮助,因为我无法在using或try/catch块中包装对集合的所有引用.此集合由我无法控制的应用程序部分使用.

如何清除这些事件处理程序以解决此内存泄漏?

c# asp.net events idisposable red-gate-ants

9
推荐指数
1
解决办法
1万
查看次数

我是否需要在asp.net中取消订阅(手动订阅)活动?

有关订阅/取消订阅活动的最佳实践规则是否适用于asp.net?

我知道这可能看起来像一个愚蠢的问题,但是当我想到它时,我从未真正看到任何人们首先在页面上订阅事件然后在Web请求中取消订阅的代码.

示例1:在页面上,在Page_Load方法中,我订阅了ListView上的更新事件.我是否应该稍后取消订阅该事件,例如在OnPreRenderComplete方法中?

示例2:在被动视图模式中,视图(页面控件/用户控件)将在需要演示者执行任何操作时引发事件.因此,演示者需要订阅视图中的事件,但是还需要再次取消订阅事件吗?

最好的问候,埃吉尔.

asp.net events garbage-collection page-lifecycle

5
推荐指数
1
解决办法
1755
查看次数

System.Drawing和垃圾收集

有些人可能知道,我最近在我的网站上发布了大量内存使用情况,并且我知道我的缩略图可能与此有关,因为我在使用它时由于我的误解,我没有主动处理该实例.有用.

我现在正在查看我的缩略图代码,并想知道什么时候实际需要处理的东西,是否仅在创建对象的新实例时?

喜欢:

Target := System.Drawing.Bitmap.Create(Trunc(Width), Trunc(Height));
MyImage := Target.FromFile(PhotoPath);
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,我是否需要处理Target和MyImage以确保GC能够正确执行它需要做的事情?

谢谢.

.net asp.net memory-management

3
推荐指数
1
解决办法
504
查看次数