The destructor can be implemented in C# using either of these ways:
public void Dispose() {
try {
if (m_lock != null)
m_lock.Dispose();
} finally {
if (m_disposed)
m_disposed = false;
} }