Unlock must be called once direct buffer access is not needed anymore. Forgetting to unlock a locked surface is likely to prevent the buffer from being disposed, thus causing a memory leak. Neither Dispose nor Finalize will unlock the surface, for safety reasons.