相关疑难解决方法(0)

使用语句与IDisposable.Dispose()

我的理解是,一旦代码退出块,.NET 中的using语句就会调用IDisposable对象的Dispose()方法.

using声明是否还做其他事情?如果没有,似乎以下两个代码示例实现完全相同的事情:

Using Con as New Connection()
    Con.Open()
    'do whatever '
End Using

Dim Con as New Connection()
Con.Open()
'do whatever '
Con.Dispose()
Run Code Online (Sandbox Code Playgroud)

我会给那些确认我是正确的人或者指出我错了并给出解释原因的人给出最好的答案.请记住,我知道某些类可以在其Dispose()方法中执行不同的操作.这个问题是关于using语句是否达到与调用对象Dispose()方法完全相同的结果.

.net c# vb.net idisposable using

49
推荐指数
5
解决办法
3万
查看次数

尝试/最后阻止vs调用dispose?

这两个代码示例之间是否有任何区别,如果没有,为什么using存在?

StreamWriter writer;
try {
    writer = new StreamWriter(...)
    writer.blahblah();

} finally {
    writer.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

VS:

using (Streamwriter writer = new Streamwriter(...)) {
    writer.blahblah
}
Run Code Online (Sandbox Code Playgroud)

我的意思是在第二个例子中你真的应该把它放在try块中,所以添加finally块确实不会花费太多精力.我知道整个事情可能包含在一个更大的尝试块中但是,对我来说似乎是多余的.

c# dispose using try-catch streamwriter

8
推荐指数
3
解决办法
9644
查看次数

Emgu CV - 内存泄漏(内存消耗)

我正在使用EmguCV,.NET的OpenCV包装器.我正在处理所有创建的对象,但我的应用程序仍在使用越来越多的内存(在发布配置中).我使用.NET Memory Profiler调试了我的应用程序并得到了这个结果:

http://img532.imageshack.us/img532/2503/screenqv.png

所有对象实例计数都是振荡但GChandle实例计数器正在增加,直到我的机器无法使用.垃圾收集器不会释放内存(我认为).

我正在使用VS 2008专业版,Win7教授32位,既是最新的,也是最后一个稳定版的emguCV.

我可以发布一些应用程序代码,如果有帮助的话.

谢谢,抱歉我的英语.马丁

c# opencv memory-leaks emgucv

6
推荐指数
1
解决办法
6170
查看次数

为什么在这个例子中使用会增加内存消耗

通过阅读这篇文章,我有点困惑:

https://www.dotnetperls.com/using

他们演示了调用2个一次性对象,结束了更多的内存使用,而没有usings 的方法,执行相同的指令,使用较低的内存.

你能解释一下为什么在这个例子中使用会增加内存消耗吗?

我想了解在某些情况下是否应该避免使用.

我认为dispose释放记忆是一个好主意,但看起来我错了.

c# garbage-collection dispose using

-2
推荐指数
1
解决办法
114
查看次数