Yes, your code is leaking a lot. It should be like this:
using (StringReader reader = new StringReader(...))
{
}
, IDisposable, , , Dispose .
UPDATE:
: .NET IDisposable, Dispose. , (, , , ..), /, Dispose. .NET - , , try/finally:
var myRes = new MyResource();
try
{
myRes.DoSomething();
}
finally
{
if (myRes != null)
{
((IDisposable)myRes).Dispose();
}
}
, #, , , , PITA. using:
using (var myRes = new MyResource())
{
myRes.DoSomething();
}
.