Here's what I've learned in a recent fight with a nasty object disposal bug. Every .NET developer needs to understand object disposal. Start with DG Update: Dispose, Finalization, and Resource Management for a complete discussion of the topic. Carefully implement the pattern. Here's the bug I had to deal with: protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { // dispose of managed objects // dispose of unmanaged resources } disposed = true; } } Both the managed objects...