Four things that will cause Dispose to not be called in a using block:
- A power failure on your machine when inside the using block.
- Your machine getting melted by an atomic bomb while in the inside of the using block.
- Uncatchable exceptions like
StackOverflowException
,AccessViolationException
and possibly others. - Environment.FailFast