public void Dispose() { bar_destroy(_bar); if (IntPtr.Zero != _ibar) { ibar_destroy(_ibar); _ibar = IntPtr.Zero; _ibar_callback = null; } }
public void Register(IBar ibar) { if (IntPtr.Zero != _ibar) { ibar_destroy(_ibar); _ibar = IntPtr.Zero; _ibar_callback = null; } _ibar_callback = ibar.GetNumber; _ibar = ibar_create(_ibar_callback); if (_ibar == IntPtr.Zero) { throw new OutOfMemoryException(); } bar_register(_bar, _ibar); }
static extern IntPtr ibar_create(ibar_get_number_callback callback);