Imagine you're writing a library. Say, this library is going to be used in 24/7 server application. There are some unmaneged resourses, wrapped in your public API, so you implement Disposable pattern( you may even implement finalizers)

Normally, you would use `using` statement to free the unmanaged resources. But you are writing just a library, not a final application. What if another programmer 'forgotten' to call `Dispose()`? You are going to get resource leak in your lib!
We could rely on finalizers, but there is no guarantee that a finalizer would ever been [called](http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx "called").
So, is there a way to guarantee that somehow the unmanaged resources would be freed? Any ideas?