我记得我是通过将它从网络直接流式传输到位图来加载图像.关闭流,返回位图并将其保存在图像控件中.
我除了当我执行= loadPicture()时,第一个位图将被释放,就像智能指针在C++中一样.但它没有,我消耗了很多公羊,直到我打电话给处理.所以我的问题是.
GC和Dispose能够在C#中如何工作?为什么它不像smart_ptr那样实现?
引用不是智能指针.让引用变量超出范围,将其替换为另一个值,和/或将其设置为null都不会执行任何操作.
这只是CLI/GC设计的一部分......
Gargage Collection(GC)将在需要时运行,并且应该清理所使用的托管内存,并且(如果提供了终结器)也可以清除任何非托管资源.但对于确定性清理:这就是完整的目的IDisposable.Dispose()当你完成这些对象时,这是你的工作- 通过using或通过将其交给承担此责任的其他东西(常见的,例如,使用流/读取器等).
using (StreamReader reader = new StreamReader(myfile)))
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |