相关疑难解决方法(0)

你什么时候处理GDI +资源?

许多GDI +类实现了IDisposable,但我不确定何时应该调用Dispose.对于我使用的new静态方法创建的实例很明显Graphics.CreateGraphics.但是属性getter返回的对象呢?我经常写这样的代码:

var oldRgn = g.Clip;
using (var rectRegion = new Region(rectangle))
{
    g.Clip = rectRegion;
    // draw something
}
g.Clip = oldRgn;
Run Code Online (Sandbox Code Playgroud)

我应该oldRgn在那之后处理吗?我的内存分析器告诉我,如果不这样做,会有一些不相关的实例.在反射器中查看实现至少可以确认getter在每次调用时都显然创建了一个新实例:

// Graphics.Clip code from Reflector:
public Region get_Clip()
{
    Region wrapper = new Region();
    int status = SafeNativeMethods.Gdip.GdipGetClip(new HandleRef(this, this.NativeGraphics), new HandleRef(wrapper, wrapper.nativeRegion));
    if (status != 0)
    {
        throw SafeNativeMethods.Gdip.StatusException(status);
    }
    return wrapper;
}
Run Code Online (Sandbox Code Playgroud)

我在MSDN中找不到任何相关内容,文档中的示例似乎从未处理过任何内容.

.net gdi+

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

标签 统计

.net ×1

gdi+ ×1