Dispose is used to free unmanaged resources like files, database connections, etc. at any time.
Finalize can be used to free unmanaged resources (when you implement it) like files, database connections, etc. held by an object before that object is destroyed.