Dispose with Using


misc_vol3_087 I’m sure that many of you already know that many of the objects in the .NET framework need to be disposed.  The most common of these are the windows objects and the stream objects.

Of course the trick in using dispose is in calling it at the right time.  If your code throws an exception, you need to make sure that dispose still gets called on that object.

The standard code for ensuring that dispose gets called looks like:

System.IO.FileStream fs =
    new System.IO.FileStream("c:\\file.txt",
        System.IO.FileMode.Open);
try
{
    // do something with fs here
}
finally
{
    fs.Dispose();
}

Which can get pretty cumbersome if you are dealing with multiple objects that need to be disposed.

This is where the usings statement comes in handy.  By using(fs) we avoid having to write out the finally block:

System.IO.FileStream fs =
    new System.IO.FileStream("c:\\file.txt",
        System.IO.FileMode.Open);
using(fs)
{
    // do something with fs here
}

When the code compiles to intermediate language, it translates the using statement into the try/finally syntax I showed you above.

You can also embed the constructor line in your using statement:

using (System.IO.FileStream fs =
    new System.IO.FileStream("c:\\file.txt",
        System.IO.FileMode.Open))
{
    // do something here
}

And you can combine multiple statements in your using block as long as the types match so that if you were doing a file copy operation your code might look something like this:

using (System.IO.FileStream fs =
    new System.IO.FileStream("c:\\file.txt",
        System.IO.FileMode.Open),
        fs2 =
    new System.IO.FileStream("c:\\file2.txt",
        System.IO.FileMode.CreateNew))
{
    // do something here
}

Notice in the code above that we did not have to declare fs2 as a FileStream because it was declared as such when we declared fs.

If you have objects of multiple types being used, you will need to use multiple using statements.  Fortunately, we don’t run into this situation frequently so the syntax cleans up our code nicely most of the time.


Ads by Lake Quincy Media

Other Related Items:

Gyration Air Mouse Elite In-Air Cursor Control using Patented MotionSenseTM Technology and Optical Sensor GYM5600NAGyration Air Mouse Elite In-Air Cursor Control using Patented MotionSenseTM Technology and Optical Sensor GYM5600NAThe elegant and ergonomic Gyration GYM5600NA Air Mouse Elite brings the intuitive simplicity of motion to your digital life. With the Gyration GYM5600... Read More >
Eastland Women's C-Sharp BootEastland Women's C-Sharp BootA causal, outdoor ankle boot with shoe-like comfort Durable leather upper Color-fast breathable lining keeps feet cool and dry Removable insole wit... Read More >
Three by Tey: Miss Pym Disposes, The Franchise Affair, and Brat Farrar1954 MacMillan hardcover, book club edition (BCE), book & binding in great condition, medium wear to dust jacket

Related Post

2 Responses to “Dispose with Using”

DotNetNuke Sponsor

 

Most Valuable Blogger
Sponsor