EDIT: This question is a duplicate of What is the difference between managed and native resources when disposing? (.NET) and many others. Please answer the
I normally implement IDisposable every time I need to do a clean up of items. For me this is when writing code that abstracts database/network/filesystems.
It just marks items ready for the Garbage Collector instead of waiting for it to try do it on its own.