7
|
JYelton Melchior Blausand · 技术社区 · 14 年前 |
![]() |
1
3
Invoke()方法不使用任何句柄。但是,这段代码显然是从线程调用的。一根线 做 Thread类没有Dispose()方法,尽管它应该有一个。这可能是在设计上,很难可靠地调用线程池线程,这是不可能的。线程需要的5个句柄由终结器释放。如果终结器从未运行,则程序将需要不断增加的句柄数。 不运行终结器是很不寻常的。你必须有一个程序,启动了很多线程,但没有分配很多内存。这往往只发生在静态测试中。您可以使用Perfmon.exe诊断此情况,使用.NET内存性能计数器并检查是否正在进行gen#0收集。
|
![]() |
2
4
我也有同样的问题
句柄会增加,因为Invoke是同步的,而且实际上句柄一直处于挂起状态。 应该使用等待句柄来处理结果,或者使用异步BeginInvoke方法,如下所示。
|
![]() |
3
3
我在代码里也看到了同样的东西。我通过替换
|
![]() |
4
1
事实上,我看到了和JYelton一样的问题。我在线程中有相同的调用来更新UI。
一旦排队
|
![]() |
5
1
带有显式句柄finalize的Aync调用。示例:
看到了吗 http://msdn.microsoft.com/en-us/library/system.iasyncresult.asyncwaithandle.aspx 注: |
|
6
1
下面是一个扩展方法,它的功能类似于普通的Invoke调用,但会在以下操作之后清除句柄:
它将阻塞并等待委托执行,然后在返回之前关闭句柄。 |
![]() |
7
0
这是使用的标准模式
您确定您的问题不是由应用程序中未包含在问题中的其他代码引起的吗? |
![]() |
8
0
|
![]() |
payloc91 · 存储地图中的条目是否安全?它会导致内存泄漏吗? 6 年前 |
![]() |
pjj · 如果GC'ed是弱可达对象,那么为什么会出现OOM错误 6 年前 |
![]() |
K.R. · RxJava行为主体和使用者-这里是否存在内存泄漏? 6 年前 |
![]() |
eaglefreeman · 意外的R内存管理行为 6 年前 |
![]() |
areify · 如何避免此代码中的内存泄漏? 6 年前 |