public void Dispose() { if (!IsDisposed) { selectionChangedHandler = null; if (isRegistered && (view != null)) { try { view.DestroyObject(SELECTION_OBJECT); view.SetObjectCallback(SELECTION_OBJECT, SELECTION_TEXT_CALLBACK, null); view.SetObjectCallback(SELECTION_OBJECT, SELECTION_HTML_CALLBACK, null); } catch { } finally { view = null; isRegistered = false; } } IsDisposed = true; } GC.SuppressFinalize(this); }