Стоит ли утилизировать объект GDI + перед его созданием? - PullRequest
1 голос
/ 17 марта 2010

Должен ли я располагать объект GDI + перед его созданием?

Рекомендуется всегда утилизировать объект GDI + после его использования.

например

Pen p = new Pen(Color.Green);
// use 'p'
p.Dispose();

сейчас, если у меня такая ситуация:

Pen p = new Pen(Color.Green);
// use green 'p'

p = new Pen(Color.Red); // Should I Dispose my 'p' first?
// use red 'p'

p.Dispose();

РЕДАКТИРОВАТЬ A:

Использование «ИСПОЛЬЗОВАНИЯ» невозможно каждый раз.

private Pen p;

public RefreshPen(style)
{
    // p.Dispose(); +-
    p = new Pen(style.Color);
    // etc.
}

РЕДАКТИРОВАТЬ B:

Это будет нормально?

using (Pen p = new Pen(Color.Green))
{
    // use green 'p'

    p = new Pen(Color.Red); // Should I Dispose my 'p' first?
    // use red 'p'

    p = new Pen(Color.Blue); // Should I Dispose my 'p' first?
    // use blue 'p'
}

Ответы [ 3 ]

3 голосов
/ 17 марта 2010

Да, вы должны. (Также обратите внимание, что оператор using здесь очень помогает. Я очень редко вызываю. Удалять явно. using об этом позаботится.)

1 голос
/ 17 марта 2010

Разве вы не можете просто изменить свойства объекта?

Pen p = new Pen(Color.Green);
//use it here.
p.Color = Color.Red;
//use it some more.
p.Dispose();
1 голос
/ 17 марта 2010

Да. Вы создаете новый объект и назначаете его для p, что означает, что вы должны удалить старый объект.

Я мог бы написать это так:

using(Pen p = new Pen(Color.Green))
{
    //do some stuff
}

using(Pen q = new Pen(Color.Red))
{
    //do some other stuff
}

Это не позволит вам забыть утилизировать ручку или использовать утилизированный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...