I have a variable "pen" of type System.Drawing.Pen which is getting assigned multiple times in a particular method. I want to put it within "using" statement. How I can do that?
Pen pen = new Pen(Color.Gray);
// some code which uses gray value
pen = new Pen(Color.Green);
// some code which uses green value
pen = new Pen(Color.Red);
// some code which uses red value
Thanks in advance.
CodePudding user response:
Well, Pen implements IDisposable since it allocates unmanaged resources (HPEN) and thus in general case using is required.
In your current code you have resource leakage:
Pen pen = new Pen(Color.Gray);
// some code which uses gray value
pen = new Pen(Color.Green); // <- from now on Pen(Color.Gray) is leaked
// some code which uses green value
pen = new Pen(Color.Red); // <- from now on Pen(Color.Green) is leaked
// some code which uses red value
You can either use predefined pens (no using required):
Pen pen = Pens.Gray;
// some code which uses gray value
pen = Pens.Green;
// some code which uses green value
pen = Pens.Red;
// some code which uses red value
Or if you want to create Pens manually, wrap them into using:
using (Pen pen = new Pen(Color.Gray)) {
// some code which uses gray value
}
using (Pen pen = new Pen(Color.Green) {
// some code which uses green value
}
using (Pen pen = new Pen(Color.Red)) {
// some code which uses red value
}
