public void Dispose() { if (!_disposed) { AL.DeleteSource(source); source = 0; // Indicate that the instance has been disposed. _disposed = true; // managed resource cleanup here. var error = AL.GetError(); if (error != ALError.NoError) { #if DEBUG throw new OpenALException(error, "borked dispose. ALError: " + error.ToString()); #else Console.WriteLine("borked dispose. ALError: " + error.ToString()); #endif } sourceInstance.UnlinkInstance(this); sourceInstance = null; } GC.SuppressFinalize(this); }